• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/router/db-4.8.30/test/scr037/
1/*-
2 * See the file LICENSE for redistribution information.
3 *
4 * Copyright (c) 2009 Oracle.  All rights reserved.
5 *
6 */
7using System;
8using System.Collections.Generic;
9using System.IO;
10using System.Text;
11using System.Xml;
12using NUnit.Framework;
13using BerkeleyDB;
14
15namespace CsharpAPITest
16{
17	[TestFixture]
18	public class RecnoDatabaseConfigTest : DatabaseConfigTest
19	{
20		private string testFixtureHome;
21		private string testFixtureName;
22		private string testName;
23		private string testHome;
24
25		[TestFixtureSetUp]
26		public void RunBeforeTests()
27		{
28			testFixtureName = "RecnoDatabaseConfigTest";
29			testFixtureHome = "./TestOut/" + testFixtureName;
30
31			Configuration.ClearDir(testFixtureHome);
32		}
33
34		[Test]
35		override public void TestConfigWithoutEnv()
36		{
37			testName = "TestConfigWithoutEnv";
38			XmlElement xmlElem = Configuration.TestSetUp(
39			    testFixtureName, testName);
40
41			RecnoDatabaseConfig recnoDBConfig =
42			    new RecnoDatabaseConfig();
43			Config(xmlElem, ref recnoDBConfig, true);
44			Confirm(xmlElem, recnoDBConfig, true);
45		}
46
47		[Test]
48		public void TestAppend()
49		{
50			uint recno;
51
52			testName = "TestAppend";
53			testHome = testFixtureHome + "/" + testName;
54			string dbFileName = testHome + "/" + testName + ".db";
55
56			Configuration.ClearDir(testHome);
57
58			RecnoDatabaseConfig recnoConfig =
59			    new RecnoDatabaseConfig();
60			recnoConfig.Creation = CreatePolicy.IF_NEEDED;
61			recnoConfig.Append = new AppendRecordDelegate(
62			    AppendRecord);
63			RecnoDatabase recnoDB = RecnoDatabase.Open(
64			    dbFileName, recnoConfig);
65			recno = recnoDB.Append(new DatabaseEntry(
66			    ASCIIEncoding.ASCII.GetBytes("data")));
67
68			KeyValuePair<DatabaseEntry, DatabaseEntry> pair;
69			pair = recnoDB.Get(
70			    new DatabaseEntry(BitConverter.GetBytes(recno)));
71			Assert.AreEqual(ASCIIEncoding.ASCII.GetBytes("data"),
72			    pair.Value.Data);
73
74			recnoDB.Close();
75		}
76
77		public void AppendRecord(DatabaseEntry data, uint recno)
78		{
79			data.Data = BitConverter.GetBytes(recno);
80		}
81
82		public static void Confirm(XmlElement xmlElement,
83		    RecnoDatabaseConfig recnoDBConfig, bool compulsory)
84		{
85			DatabaseConfig dbConfig = recnoDBConfig;
86			Confirm(xmlElement, dbConfig, compulsory);
87
88			// Confirm Recno database specific configuration
89			Configuration.ConfirmString(xmlElement, "BackingFile",
90			    recnoDBConfig.BackingFile, compulsory);
91			Configuration.ConfirmCreatePolicy(xmlElement,
92			    "Creation", recnoDBConfig.Creation, compulsory);
93			Configuration.ConfirmInt(xmlElement, "Delimiter",
94			    recnoDBConfig.Delimiter, compulsory);
95			Configuration.ConfirmUint(xmlElement, "Length",
96			    recnoDBConfig.Length, compulsory);
97			Configuration.ConfirmInt(xmlElement, "PadByte",
98			    recnoDBConfig.PadByte, compulsory);
99			Configuration.ConfirmBool(xmlElement, "Renumber",
100			    recnoDBConfig.Renumber, compulsory);
101			Configuration.ConfirmBool(xmlElement, "Snapshot",
102			    recnoDBConfig.Snapshot, compulsory);
103		}
104
105		public static void Config(XmlElement xmlElement,
106		    ref RecnoDatabaseConfig recnoDBConfig, bool compulsory)
107		{
108			int intValue = new int();
109			uint uintValue = new uint();
110			DatabaseConfig dbConfig = recnoDBConfig;
111			Config(xmlElement, ref dbConfig, compulsory);
112
113			// Configure specific fields/properties of Recno database
114			Configuration.ConfigCreatePolicy(xmlElement, "Creation",
115			    ref recnoDBConfig.Creation, compulsory);
116			if (Configuration.ConfigInt(xmlElement, "Delimiter",
117			    ref intValue, compulsory))
118				recnoDBConfig.Delimiter = intValue;
119			if (Configuration.ConfigUint(xmlElement, "Length",
120			    ref uintValue, compulsory))
121				recnoDBConfig.Length = uintValue;
122			if (Configuration.ConfigInt(xmlElement, "PadByte",
123			    ref intValue, compulsory))
124				recnoDBConfig.PadByte = intValue;
125			Configuration.ConfigBool(xmlElement, "Renumber",
126			    ref recnoDBConfig.Renumber, compulsory);
127			Configuration.ConfigBool(xmlElement, "Snapshot",
128			    ref recnoDBConfig.Snapshot, compulsory);
129		}
130	}
131}
132