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 SecondaryDatabaseConfigTest
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 = "SecondaryDatabaseConfigTest";
31			testFixtureHome = "./TestOut/" + testFixtureName;
32
33			Configuration.ClearDir(testFixtureHome);
34		}
35
36		[Test]
37		virtual public void TestConfig()
38		{
39			testName = "TestConfig";
40			testHome = testFixtureHome + "/" + testName;
41			string dbFileName = testHome + "/" + testName;
42
43			Configuration.ClearDir(testHome);
44
45			XmlElement xmlElem = Configuration.TestSetUp(
46			    testFixtureName, testName);
47
48
49			// Open a primary btree database.
50			BTreeDatabaseConfig btreeDBConfig =
51			    new BTreeDatabaseConfig();
52			btreeDBConfig.Creation = CreatePolicy.IF_NEEDED;
53			BTreeDatabase btreeDB = BTreeDatabase.Open(
54			    dbFileName, btreeDBConfig);
55
56			SecondaryDatabaseConfig secDBConfig =
57			    new SecondaryDatabaseConfig(btreeDB, null);
58			Config(xmlElem, ref secDBConfig, true);
59			Confirm(xmlElem, secDBConfig, true);
60			btreeDB.Close();
61		}
62
63		public static void Config(XmlElement xmlElement,
64		    ref SecondaryDatabaseConfig secDBConfig,
65		    bool compulsory)
66		{
67			Configuration.ConfigBool(xmlElement, "ImmutableKey",
68			    ref secDBConfig.ImmutableKey, compulsory);
69			Configuration.ConfigBool(xmlElement, "Populate",
70			    ref secDBConfig.Populate, compulsory);
71		}
72
73		public static void Confirm(XmlElement xmlElement,
74		    SecondaryDatabaseConfig secDBConfig,
75		    bool compulsory)
76		{
77			Configuration.ConfirmBool(xmlElement, "ImmutableKey",
78			    secDBConfig.ImmutableKey, compulsory);
79			Configuration.ConfirmBool(xmlElement, "Populate",
80			    secDBConfig.Populate, compulsory);
81		}
82	}
83}
84