Package com.cybozu.vmbkp.util

Source Code of com.cybozu.vmbkp.util.TestBitmap

/**
* @file
* @brief TestBitmap
*
* Copyright (C) 2009,2010 Cybozu Inc., all rights reserved.
*
* @author Takashi HOSHINO <hoshino@labs.cybozu.co.jp>
*/
package com.cybozu.vmbkp.util;

import com.cybozu.vmbkp.util.VmdkBitmap;

/**
* @brief Test of VmdkBitmap class.
*
* Don't forget execute java with -ea option
* to enable assertion check.
*/
public class TestBitmap
{
    static final long KILO = 1024L;
    static final long MEGA = 1024L * 1024L;
    static final long GIGA = 1024L * 1024L * 1024L;
    static final long TERA = 1024L * 1024L * 1024L * 1024L;

    public static void main(String[] args)
    {
        /* basic test */
        if (true) {
            VmdkBitmap bmp = new VmdkBitmap(32, 1);

            try {
                bmp.setRangeInBytes(0, 4);
                bmp.setRangeInBytes(16, 8);
            } catch (Exception e) {
                e.printStackTrace();
            }
       
            System.out.println(bmp.toString());

            System.out.println("bytestring begin.");
            byte[] a = bmp.getAsByteString();
            for (int i = 0; i < a.length; i ++) {
                System.out.printf("%02x ", a[i]);
            }
            System.out.println("bytestring end.");
        }

        /* alignment test */
        if (true) {
            VmdkBitmap bmp = new VmdkBitmap(8 * 1024, 1024);

            try {
                bmp.setRangeInBytes(0, 1);
                System.out.println(bmp.toString());
                assert bmp.toString().equals("10000000");
                bmp.clear();

                bmp.setRangeInBytes(2047, 1);
                System.out.println(bmp.toString());
                assert bmp.toString().equals("01000000");
                bmp.clear();

                bmp.setRangeInBytes(4096, 0);
                System.out.println(bmp.toString());
                assert bmp.toString().equals("00000000");
                bmp.clear();

                bmp.setRangeInBytes(4096, 1);
                System.out.println(bmp.toString());
                assert bmp.toString().equals("00001000");
                bmp.clear();
               
                bmp.setRangeInBytes(1024, 1024);
                System.out.println(bmp.toString());
                assert bmp.toString().equals("01000000");
                bmp.clear();

                bmp.setRangeInBytes(1024, 1025);
                System.out.println(bmp.toString());
                assert bmp.toString().equals("01100000");
                bmp.clear();

                bmp.setRangeInBytes(1023, 1025);
                System.out.println(bmp.toString());
                assert bmp.toString().equals("11000000");
                bmp.clear();

                bmp.setRangeInBytes(1023, 1026);
                System.out.println(bmp.toString());
                assert bmp.toString().equals("11100000");
                bmp.clear();

                bmp.setRangeInBytes(1023, 1);
                System.out.println(bmp.toString());
                assert bmp.toString().equals("10000000");
                bmp.clear();

            } catch (Exception e) {
                e.printStackTrace();
            }


        }
       
        /* large bitmap test. */
        if (true) {
            /* 1TB */
            System.out.printf("1TB: %d\n", TERA);
            VmdkBitmap bmp = new VmdkBitmap(TERA);
           
            try {
                bmp.setRangeInBytes(0, MEGA);
                System.out.println(bmp.get(0));
                assert bmp.get(0) == true;
                bmp.clear();

                bmp.setRangeInBytes(GIGA + 1, 2 * MEGA);
                //bmp.setRangeInBytes(GIGA + , 1 * MEGA + 2 * KILO);

                System.out.println(bmp.get(1022)); assert bmp.get(1022) == false;
                System.out.println(bmp.get(1023)); assert bmp.get(1023) == false;
                System.out.println(bmp.get(1024)); assert bmp.get(1024) == true;
                System.out.println(bmp.get(1025)); assert bmp.get(1025) == true;
                System.out.println(bmp.get(1026)); assert bmp.get(1026) == true;
                System.out.println(bmp.get(1027)); assert bmp.get(1027) == false;
                bmp.clear();
               
            } catch (Exception e) {
                e.printStackTrace();
            }

        }
    }
}
TOP

Related Classes of com.cybozu.vmbkp.util.TestBitmap

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.