Пример #1
0
 public void AutoCleanupCursors()
 {
     Database db = new Database();
     db.Create("ntest.db");
     Cursor cursor = new Cursor(db);
     // let gc do the cleanup
     db.Close(HamConst.HAM_AUTO_CLEANUP);
 }
Пример #2
0
 public void AutoCleanupCursors4()
 {
     Database db = new Database();
     db.Create("ntest.db");
     Cursor cursor1 = new Cursor(db);
     Cursor cursor2 = cursor1.Clone();
     Cursor cursor3 = cursor1.Clone();
     Cursor cursor4 = cursor1.Clone();
     Cursor cursor5 = cursor1.Clone();
     cursor3.Close();
     cursor5.Close();
     // let gc do the cleanup
     db.Close(HamConst.HAM_AUTO_CLEANUP);
 }
Пример #3
0
        public void InsertKey()
        {
            Database db = new Database();
            byte[] k = new byte[5];
            byte[] r1 = new byte[5];
            byte[] r2;
            try {
                db.Create("ntest.db");
                k[0] = 1;
                r1[0] = 1;
                db.Insert(k, r1);
                r2 = db.Find(k);
                checkEqual(r1, r2);

                k[0] = 2;
                r1[0] = 2;
                db.Insert(k, r1);
                r2 = db.Find(k);
                checkEqual(r1, r2);

                k[0] = 3;
                r1[0] = 3;
                db.Insert(k, r1);
                r2 = db.Find(k);
                checkEqual(r1, r2);
                db.Close();
            }
            catch (DatabaseException e) {
                Assert.Fail("unexpected exception " + e);
            }
        }
Пример #4
0
 public void CreateStringIntIntParameter()
 {
     Database db = new Database();
     Parameter[] param = new Parameter[1];
     param[0] = new Parameter();
     param[0].name = HamConst.HAM_PARAM_CACHESIZE;
     param[0].value = 1024;
     try {
         db.Create("ntest.db", 0, 0644, param);
         db.Close();
     }
     catch (DatabaseException e) {
         Assert.Fail("Unexpected exception " + e);
     }
 }
Пример #5
0
 public void SetUp()
 {
     db = new Database();
     db.Create("ntest.db", HamConst.HAM_ENABLE_DUPLICATES);
 }
Пример #6
0
 public void SetPrefixComparator()
 {
     Database db = new Database();
     byte[] k = new byte[25];
     byte[] r = new byte[25];
     compareCounter = 0;
     try {
         db.Create("ntest.db");
         db.SetPrefixCompareFunc(new
             PrefixCompareFunc(MyPrefixCompareFunc));
         db.Insert(k, r);
         k[0] = 1;
         db.Insert(k, r);
         db.Close();
     }
     catch (DatabaseException e) {
         Assert.Fail("unexpected exception " + e);
     }
     Assert.AreEqual(1, compareCounter);
 }
Пример #7
0
 public void SetDuplicateComparator()
 {
     Database db = new Database();
     byte[] k = new byte[5];
     byte[] r = new byte[5];
     compareCounter = 0;
     try
     {
         db.Create("ntest.db", HamConst.HAM_ENABLE_DUPLICATES|HamConst.HAM_SORT_DUPLICATES);
         db.SetDuplicateCompareFunc(new DuplicateCompareFunc(MyDupeCompareFunc));
         db.Insert(k, r);
         r[0] = 1;
         db.Insert(k, r, HamConst.HAM_DUPLICATE);
         db.Close();
     }
     catch (DatabaseException e)
     {
         Assert.Fail("unexpected exception " + e);
     }
     Assert.AreEqual(1, compareCounter);
 }
Пример #8
0
 public void InsertKeyOverwrite()
 {
     Database db = new Database();
     byte[] k = new byte[5];
     byte[] r = new byte[5];
     try {
         db.Create("ntest.db");
         db.Insert(k, r);
         r[0] = 1;
         db.Insert(k, r, HamConst.HAM_OVERWRITE);
         byte[] r2 = db.Find(k);
         checkEqual(r, r2);
         db.Close();
     }
     catch (DatabaseException e) {
         Assert.Fail("unexpected exception " + e);
     }
 }
Пример #9
0
 public void FindKeyNull()
 {
     Database db = new Database();
     try {
         db.Create("ntest.db");
         byte[] r = db.Find(null);
     }
     catch (NullReferenceException) {
     }
     db.Close();
 }
Пример #10
0
        public void EraseKeyTwice()
        {
            Database db = new Database();
            byte[] k = new byte[5];
            byte[] r = new byte[5];

            db.Create("ntest.db");
            db.Insert(k, r);
            byte[] r2 = db.Find(k);
            checkEqual(r, r2);
            db.Erase(k);

            try {
                db.Erase(k);
            }
            catch (DatabaseException e) {
                Assert.AreEqual(HamConst.HAM_KEY_NOT_FOUND, e.ErrorCode);
            }
            db.Close();
        }
Пример #11
0
 public void EraseKeyNegative()
 {
     Database db = new Database();
     byte[] k = new byte[5];
     db.Create("ntest.db");
     try {
         db.Erase(null);
     }
     catch (NullReferenceException) {
     }
     db.Close();
 }
Пример #12
0
 public void EnableCompressionInt()
 {
     Database db = new Database();
     try {
         db.Create("ntest.db");
         db.EnableCompression(999);
     }
     catch (DatabaseException e) {
         Assert.AreEqual(HamConst.HAM_INV_PARAMETER, e.ErrorCode);
     }
     db.Close();
 }
Пример #13
0
 public void EnableCompression()
 {
     Database db = new Database();
     db.Create("ntest.db");
     db.EnableCompression();
     db.Close();
 }
Пример #14
0
 public void CreateStringIntIntParameterNeg()
 {
     Database db = new Database();
     Parameter[] param = new Parameter[1];
     param[0] = new Parameter();
     param[0].name = HamConst.HAM_PARAM_CACHESIZE;
     param[0].value = 1024;
     try {
         db.Create("ntest.db", HamConst.HAM_IN_MEMORY_DB, 0644, param);
         db.Close();
     }
     catch (DatabaseException e) {
         Assert.AreEqual(HamConst.HAM_INV_PARAMETER, e.ErrorCode);
     }
 }
Пример #15
0
 public void InsertKeyInvalidParam()
 {
     Database db = new Database();
     byte[] k = new byte[5];
     byte[] r = new byte[5];
     db.Create("ntest.db");
     try {
         db.Insert(null, r);
     }
     catch (NullReferenceException) {
     }
     try {
         db.Insert(k, null);
     }
     catch (NullReferenceException) {
     }
     try {
         db.Insert(k, r, 9999);
     }
     catch (DatabaseException e) {
         Assert.AreEqual(HamConst.HAM_INV_PARAMETER, e.ErrorCode);
     }
     db.Close();
 }
Пример #16
0
 public void InsertKeyNegative()
 {
     Database db = new Database();
     byte[] k = new byte[5];
     byte[] r = new byte[5];
     try {
         db.Create("ntest.db");
         db.Insert(k, r);
         db.Insert(k, r);
     }
     catch (DatabaseException e) {
         Assert.AreEqual(HamConst.HAM_DUPLICATE_KEY, e.ErrorCode);
     }
     db.Close();
 }
Пример #17
0
 public void FindUnknownKey()
 {
     Database db = new Database();
     byte[] k = new byte[5];
     try {
         db.Create("ntest.db");
         byte[] r = db.Find(k);
     }
     catch (DatabaseException e) {
         Assert.AreEqual(HamConst.HAM_KEY_NOT_FOUND, e.ErrorCode);
     }
     db.Close();
 }
Пример #18
0
        public void Recovery()
        {
            Database db = new Database();
            db.Create("ntest.db", HamConst.HAM_ENABLE_RECOVERY);

            byte[] k = new byte[5];
            byte[] r = new byte[5];
            db.Insert(k, r);
            db.Close();
        }
Пример #19
0
 public void Flush()
 {
     Database db = new Database();
     db.Create("ntest.db");
     db.Flush();
     db.Close();
 }
Пример #20
0
 public void SetErrorHandler()
 {
     Database db = new Database();
     ErrorHandler eh = new ErrorHandler(MyErrorHandler);
     try {
         Database.SetErrorHandler(eh);
         db.Create(null);
     }
     catch (DatabaseException e) {
         Assert.AreEqual(HamConst.HAM_INV_PARAMETER, e.ErrorCode);
         Assert.AreEqual(1, errorCounter);
     }
     Database.SetErrorHandler(null);
 }
Пример #21
0
 public void GetEnvironment()
 {
     Database db = new Database();
     db.Create("ntest.db");
     Hamster.Environment env = db.GetEnvironment();
     Assert.AreNotEqual(0, env.GetHandle());
     db.Close();
 }
Пример #22
0
        private Database CreateDatabase(string file)
        {
            List<Parameter> list = new List<Parameter>();

            Parameter param1 = new Parameter();
            param1.name = HamConst.HAM_PARAM_CACHESIZE;
            param1.value = 768 * 1024 * 1024;
            list.Add(param1);

            Parameter param2 = new Parameter();
            param2.name = HamConst.HAM_PARAM_KEYSIZE;
            param2.value = 8; // sizeof(ulong);
            list.Add(param2);

            Database db = new Database();
            db.Create(file, 0, 0, list.ToArray());
            db.SetCompareFunc(new CompareFunc(NumericalCompareFunc));
            return db;
        }
Пример #23
0
 public void GetError()
 {
     Database db = new Database();
     try {
         db.Create(null);
     }
     catch (DatabaseException e) {
         Assert.AreEqual(HamConst.HAM_INV_PARAMETER, e.ErrorCode);
     }
     Assert.AreEqual(HamConst.HAM_INV_PARAMETER, db.GetLastError());
     db.Close();
 }
Пример #24
0
 public void CreateInvalidParameter()
 {
     Database db = new Database();
     Parameter[] param = new Parameter[3];
     param[1] = new Parameter();
     param[2] = new Parameter();
     try {
         db.Create("ntest.db", 0, 0, param);
         db.Close();
     }
     catch (DatabaseException e) {
         Assert.AreEqual(HamConst.HAM_INV_PARAMETER, e.ErrorCode);
     }
 }
Пример #25
0
        public void GetKeyCount()
        {
            Database db = new Database();
            db.Create("ntest.db");

            byte[] k = new byte[5];
            byte[] r = new byte[5];
            Assert.AreEqual(0, db.GetKeyCount());
            db.Insert(k, r);
            Assert.AreEqual(1, db.GetKeyCount());
            k[0] = 1;
            db.Insert(k, r);
            Assert.AreEqual(2, db.GetKeyCount());
            db.Close();
        }
Пример #26
0
        static void Main(string[] args)
        {
            byte[] key = new byte[5];
            byte[] record = new byte[5];
            Database db = new Database();

            /*
             * first, create a new Database
             */
            db.Create("test.db");

            /*
             * now we can insert, delete or lookup values in the Database
             *
             * for our test program, we just insert a few values, then look them
             * up, then delete them and try to look them up again (which will fail).
             */
            for (int i = 0; i < LOOP; i++) {
                key[0] = (byte)i;
                record[0] = (byte)i;
                db.Insert(key, record);
            }

            /*
             * now look up all values
             */
            for (int i = 0; i < LOOP; i++) {
                key[0] = (byte)i;
                byte[] r = db.Find(key);

                /*
                 * check if the value is ok
                 */
                if (r[0] != (byte)i) {
                    Console.Out.WriteLine("db.Find() returned bad value");
                    return;
                }
            }

            /*
             * close the Database handle, then re-open it (just to demonstrate how
             * to open a Database file)
             */
            db.Close();
            db.Open("test.db");

            /*
             * now erase all values
             */
            for (int i = 0; i < LOOP; i++) {
                key[0] = (byte)i;
                db.Erase(key);
            }

            /*
             * once more we try to find all values... every db.Find() call must
             * now fail with HAM_KEY_NOT_FOUND
             */
            for (int i = 0; i < LOOP; i++) {
                key[0] = (byte)i;

                try {
                    byte[] r = db.Find(key);
                }
                catch (DatabaseException e) {
                    if (e.ErrorCode != HamConst.HAM_KEY_NOT_FOUND) {
                        Console.Out.WriteLine("db.Find() returned error " + e);
                        return;
                    }
                }
            }

            /*
             * We're done! No need to close the Database handle - it's closed automatically
             */
            Console.Out.WriteLine("Success!");
        }
Пример #27
0
 public void CreateString()
 {
     Database db = new Database();
     try {
         db.Create("ntest.db");
         db.Close();
         db.Open("ntest.db");
         db.Close();
     }
     catch (DatabaseException e) {
         Assert.Fail("Unexpected exception " + e);
     }
 }