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;
9using System.Collections.Generic;
10using System.IO;
11using System.Text;
12using System.Threading;
13using System.Xml;
14using NUnit.Framework;
15using BerkeleyDB;
16
17namespace CsharpAPITest
18{
19	[TestFixture]
20	public class SecondaryRecnoDatabaseConfigTest
21	{
22		private string testFixtureHome;
23		private string testFixtureName;
24		private string testName;
25		private string testHome;
26
27		[TestFixtureSetUp]
28		public void RunBeforeTests()
29		{
30			testFixtureName = "SecondaryRecnoDatabaseConfigTest";
31			testFixtureHome = "./TestOut/" + testFixtureName;
32
33			Configuration.ClearDir(testFixtureHome);
34		}
35
36		[Test]
37		public void TestConfig()
38		{
39			testName = "TestConfig";
40			testHome = testFixtureHome + "/" + testName;
41			string dbFileName = testHome + "/" + testName + ".db";
42
43			Configuration.ClearDir(testHome);
44			XmlElement xmlElem = Configuration.TestSetUp(
45			    testFixtureName, testName);
46
47			// Open a primary btree database.
48			RecnoDatabaseConfig recDBConfig =
49			    new RecnoDatabaseConfig();
50			recDBConfig.Creation = CreatePolicy.IF_NEEDED;
51			RecnoDatabase recDB = RecnoDatabase.Open(
52			    dbFileName, recDBConfig);
53
54			SecondaryRecnoDatabaseConfig secDBConfig =
55			    new SecondaryRecnoDatabaseConfig(recDB, null);
56
57			Config(xmlElem, ref secDBConfig, true);
58			Confirm(xmlElem, secDBConfig, true);
59
60			// Close the primary btree database.
61			recDB.Close();
62		}
63
64		public static void Confirm(XmlElement xmlElement,
65		    SecondaryRecnoDatabaseConfig secRecDBConfig,
66		    bool compulsory)
67		{
68			SecondaryDatabaseConfig secDBConfig =
69			    secRecDBConfig;
70			SecondaryDatabaseConfigTest.Confirm(xmlElement,
71			    secDBConfig, compulsory);
72
73			// Confirm secondary hash database specific configuration.
74			Configuration.ConfirmString(xmlElement, "BackingFile",
75			    secRecDBConfig.BackingFile, compulsory);
76			Configuration.ConfirmCreatePolicy(xmlElement, "Creation",
77			    secRecDBConfig.Creation, compulsory);
78			Configuration.ConfirmInt(xmlElement, "Delimiter",
79			    secRecDBConfig.Delimiter, compulsory);
80			Configuration.ConfirmUint(xmlElement, "Length",
81			    secRecDBConfig.Length, compulsory);
82			Configuration.ConfirmInt(xmlElement, "PadByte",
83			    secRecDBConfig.PadByte, compulsory);
84			Configuration.ConfirmBool(xmlElement, "Renumber",
85			    secRecDBConfig.Renumber, compulsory);
86			Configuration.ConfirmBool(xmlElement, "Snapshot",
87			    secRecDBConfig.Snapshot, compulsory);
88		}
89
90		public static void Config(XmlElement xmlElement,
91		    ref SecondaryRecnoDatabaseConfig secRecDBConfig,
92		    bool compulsory)
93		{
94			int intValue = new int();
95			uint uintValue = new uint();
96			SecondaryDatabaseConfig secDBConfig = secRecDBConfig;
97			SecondaryDatabaseConfigTest.Config(xmlElement,
98			    ref secDBConfig, compulsory);
99
100			// Configure specific fields/properties of Recno database
101			Configuration.ConfigCreatePolicy(xmlElement, "Creation",
102			    ref secRecDBConfig.Creation, compulsory);
103			if (Configuration.ConfigInt(xmlElement, "Delimiter",
104			    ref intValue, compulsory))
105				secRecDBConfig.Delimiter = intValue;
106			if (Configuration.ConfigUint(xmlElement, "Length",
107			     ref  uintValue, compulsory))
108				secRecDBConfig.Length = uintValue;
109			if (Configuration.ConfigInt(xmlElement, "PadByte",
110			    ref intValue, compulsory))
111				secRecDBConfig.PadByte = intValue;
112			Configuration.ConfigBool(xmlElement, "Renumber",
113			    ref secRecDBConfig.Renumber, compulsory);
114			Configuration.ConfigBool(xmlElement, "Snapshot",
115			    ref secRecDBConfig.Snapshot, compulsory);
116		}
117	}
118}
119
120