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 QueueDatabaseConfigTest : DatabaseConfigTest
19	{
20		private string testFixtureHome;
21		private string testFixtureName;
22		private string testName;
23
24		[TestFixtureSetUp]
25		public void RunBeforeTests()
26		{
27			testFixtureName = "QueueDatabaseConfigTest";
28			testFixtureHome = "./TestOut/" + testFixtureName;
29
30			Configuration.ClearDir(testFixtureHome);
31		}
32
33		[Test]
34		 new public void TestConfigWithoutEnv()
35		{
36			testName = "TestConfigWithoutEnv";
37			XmlElement xmlElem = Configuration.TestSetUp(
38			    testFixtureName, testName);
39			QueueDatabaseConfig queueDBConfig =
40			    new QueueDatabaseConfig();
41			Config(xmlElem, ref queueDBConfig, true);
42			Confirm(xmlElem, queueDBConfig, true);
43		}
44
45		public static void Confirm(XmlElement xmlElement,
46		    QueueDatabaseConfig queueDBConfig, bool compulsory)
47		{
48			DatabaseConfig dbConfig = queueDBConfig;
49			Confirm(xmlElement, dbConfig, compulsory);
50
51			// Confirm Queue database specific configuration
52			Configuration.ConfirmBool(xmlElement, "ConsumeInOrder",
53			    queueDBConfig.ConsumeInOrder, compulsory);
54			Configuration.ConfirmCreatePolicy(xmlElement, "Creation",
55			    queueDBConfig.Creation, compulsory);
56			Configuration.ConfirmUint(xmlElement, "Length",
57			    queueDBConfig.Length, compulsory);
58			Configuration.ConfirmInt(xmlElement, "PadByte",
59			    queueDBConfig.PadByte, compulsory);
60			Configuration.ConfirmUint(xmlElement, "ExtentSize",
61			    queueDBConfig.ExtentSize, compulsory);
62		}
63
64		public static void Config(XmlElement xmlElement,
65		    ref QueueDatabaseConfig queueDBConfig, bool compulsory)
66		{
67			uint uintValue = new uint();
68			int intValue = new int();
69			DatabaseConfig dbConfig = queueDBConfig;
70			Config(xmlElement, ref dbConfig, compulsory);
71
72			// Configure specific fields/properties of Queue database
73			Configuration.ConfigBool(xmlElement, "ConsumeInOrder",
74			    ref queueDBConfig.ConsumeInOrder, compulsory);
75			Configuration.ConfigCreatePolicy(xmlElement, "Creation",
76			    ref queueDBConfig.Creation, compulsory);
77			if (Configuration.ConfigUint(xmlElement, "Length",
78			    ref uintValue, compulsory))
79				queueDBConfig.Length = uintValue;
80			if (Configuration.ConfigInt(xmlElement, "PadByte",
81			    ref intValue, compulsory))
82				queueDBConfig.PadByte = intValue;
83			if (Configuration.ConfigUint(xmlElement, "ExtentSize",
84			    ref uintValue, compulsory))
85				queueDBConfig.ExtentSize = uintValue;
86		}
87	}
88}
89