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