/// /// Copyright © 2003-2008 JetBrains s.r.o. /// You may distribute under the terms of the GNU General Public License, as published by the Free Software Foundation, version 2 (see License.txt in the repository root folder). /// // This file was generated by C# Refactory. // To modify this template, go to Tools/Options/C# Refactory/Code using System; using JetBrains.Omea.Database; using NUnit.Framework; namespace DBUtil { [TestFixture] public class IndexCheckingTest { private const int Id = 0; private const int Name = 1; private const int Age = 2; private const int Birthday = 3; private IDatabase m_database = null; public IndexCheckingTest() {} [SetUp] public void SetUp() { try { DBTest.RemoveDBFiles(); DBTest.CreateDB(); DBStructure dbStruct = new DBStructure( "", "MyPal" ); dbStruct.LoadStructure(); m_database = dbStruct.OpenDatabase( ); } catch ( Exception exc ) { Assert.Fail( exc.Message ); } } [TearDown] public void TearDown() { try { m_database.Shutdown(); DBTest.RemoveDBFiles(); } catch ( Exception exc ) { Assert.Fail( exc.Message ); } } [Test] public void CheckCountWhenBatch( ) { ITable testTable = m_database.GetTable("People"); for ( int i = 0; i < 10; i++ ) { IRecord record = testTable.NewRecord(); record.SetValue( Name, "zhu"+ i.ToString() ); record.SetValue( Birthday, DateTime.Now ); record.Commit(); Assert.IsTrue( testTable.Count == (i + 1) ); } } [Test] public void CheckNextIDAfterDeleting( ) { ITable testTable = m_database.GetTable("People"); IRecord record = testTable.NewRecord(); record.SetValue( Name, "SomeName" ); record.SetValue( Birthday, DateTime.Now ); record.Commit(); record = testTable.NewRecord(); record.SetValue( Name, "zhu" ); record.SetValue( Birthday, DateTime.Now ); record.Commit(); Assert.AreEqual( 2, testTable.Count ); ICountedResultSet resultSet = testTable.CreateModifiableResultSet( Name, "zhu" ); Assert.AreEqual( 1, resultSet.Count ); record = resultSet[0]; Assert.AreEqual( 1, record.GetIntValue(Id) ); record.Delete(); record = testTable.NewRecord(); record.SetValue( Name, "zhu" ); record.SetValue( Birthday, DateTime.Now ); record.Commit(); Assert.AreEqual( 2, testTable.Count ); resultSet.Dispose(); resultSet = testTable.CreateModifiableResultSet( Name, "zhu" ); Assert.AreEqual( 1, resultSet.Count ); record = resultSet[0]; Assert.AreEqual( 2, record.GetIntValue(Id) ); resultSet.Dispose(); } [Test] public void CheckCountIfIdChanged( ) { ITable testTable = m_database.GetTable("People"); for ( int i = 0; i < 10; i++ ) { IRecord record = testTable.NewRecord(); record.SetValue( Id, 10 ); record.SetValue( Name, "zhu"+ i.ToString() ); record.SetValue( Birthday, DateTime.Now ); record.Commit(); Assert.AreEqual( (i + 1), testTable.Count ); } } [Test] public void CheckSaveLoadIndex( ) { ITable testTable = m_database.GetTable("People"); for ( int i = 0; i < 10; i++ ) { IRecord record = testTable.NewRecord(); record.SetValue( Name, i.ToString() ); record.SetValue( Birthday, DateTime.Now.Date ); record.Commit(); Assert.IsTrue( testTable.Count == (i + 1) ); } m_database.Shutdown(); DBStructure dbStruct = new DBStructure( "", "MyPal" ); dbStruct.LoadStructure(); m_database = dbStruct.OpenDatabase( ); testTable = m_database.GetTable("People"); Assert.AreEqual( 10, testTable.Count ); IResultSet people = testTable.CreateResultSet( Id ); int count = 0; foreach ( IRecord person in people ) { int id = person.GetIntValue( Id ); Assert.AreEqual( count, id ); string name = person.GetStringValue( Name ); Assert.AreEqual( count.ToString(), name ); int age = person.GetIntValue( Age ); age = age; DateTime dateTime = (DateTime)person.GetValue( Birthday ); Assert.AreEqual( DateTime.Now.Date, dateTime ); count++; } Assert.AreEqual( 10, count ); people.Dispose(); } [Test] public void CheckCountWhenTowBatchMode( ) { ITable testTable = m_database.GetTable("People"); for ( int i = 0; i < 10; i++ ) { IRecord record = testTable.NewRecord(); record.SetValue( Name, "zhu"+ i.ToString() ); record.SetValue( Birthday, DateTime.Now ); record.Commit(); Assert.IsTrue( testTable.Count == (i + 1) ); } for ( int i = 10; i < 20; i++ ) { IRecord record = testTable.NewRecord(); record.SetValue( Name, "zhu"+ i.ToString() ); record.SetValue( Birthday, DateTime.Now ); record.Commit(); Assert.IsTrue( testTable.Count == (i + 1) ); } } [Test] public void CheckCaseInsensitivityInIndex( ) { ITable testTable = m_database.GetTable("People"); IRecord record = testTable.NewRecord(); record.SetValue( Name, "ZHU" ); record.Commit(); record = testTable.NewRecord(); record.SetValue( Name, "zhu" ); record.Commit(); Assert.AreEqual( 2, testTable.Count ); ICountedResultSet resultSet = testTable.CreateModifiableResultSet( Name, "zhu" ); Assert.AreEqual( 2, resultSet.Count ); resultSet.Dispose(); resultSet = testTable.CreateModifiableResultSet( Name, "ZHU" ); Assert.AreEqual( 2, resultSet.Count ); resultSet.Dispose(); resultSet = testTable.CreateModifiableResultSet( Name, "Zhu" ); Assert.AreEqual( 2, resultSet.Count ); resultSet.Dispose(); } [Test] public void CheckCaseInsensitivityInCompoundIndex( ) { ITable testTable = m_database.GetTable("People"); IRecord record = testTable.NewRecord(); record.SetValue( Name, "ZHU" ); record.SetValue( Age, 30 ); record.Commit(); record = testTable.NewRecord(); record.SetValue( Name, "zhu" ); record.SetValue( Age, 30 ); record.Commit(); Assert.AreEqual( 2, testTable.Count ); ICountedResultSet resultSet = testTable.CreateResultSet( Name, "zhu", Age, 30, false ); Assert.AreEqual( 2, resultSet.Count ); resultSet.Dispose(); resultSet = testTable.CreateResultSet( Name, "ZHU", Age, 30, false ); Assert.AreEqual( 2, resultSet.Count ); resultSet.Dispose(); resultSet = testTable.CreateResultSet( Name, "Zhu", Age, 30, false ); Assert.AreEqual( 2, resultSet.Count ); resultSet.Dispose(); } [Test] public void CheckNotReusingIDs( ) { ITable testTable = m_database.GetTable("People"); IRecord record = testTable.NewRecord(); record.Commit(); int id = record.GetID(); Assert.AreEqual( 0, id ); record = testTable.NewRecord(); record.Commit(); id = record.GetID(); Assert.AreEqual( 1, id ); ICountedResultSet resultSet = testTable.CreateModifiableResultSet( Id, 1 ); Assert.AreEqual( 1, resultSet.Count ); record = resultSet[0]; record.Delete(); resultSet.Dispose(); resultSet = testTable.CreateModifiableResultSet( Id, 1 ); Assert.AreEqual( 0, resultSet.Count ); record = testTable.NewRecord(); record.Commit(); id = record.GetID(); Assert.AreEqual( 2, id ); m_database.Shutdown(); DBStructure dbStruct = new DBStructure( "", "MyPal" ); dbStruct.LoadStructure(); m_database = dbStruct.OpenDatabase( ); testTable = m_database.GetTable("People"); resultSet.Dispose(); resultSet = testTable.CreateModifiableResultSet( Id, 0 ); Assert.AreEqual( 1, resultSet.Count ); resultSet.Dispose(); resultSet = testTable.CreateModifiableResultSet( Id, 1 ); Assert.AreEqual( 0, resultSet.Count ); resultSet.Dispose(); resultSet = testTable.CreateModifiableResultSet( Id, 2 ); Assert.AreEqual( 1, resultSet.Count ); record = testTable.NewRecord(); record.Commit(); id = record.GetID(); Assert.AreEqual( 3, id ); resultSet.Dispose(); } [Test] public void CheckFlushIndexes( ) { ITable testTable = m_database.GetTable("People"); IRecord record = testTable.NewRecord(); record.SetValue( Name, "ZHU1" ); record.Commit(); record = testTable.NewRecord(); record.SetValue( Name, "zhu2" ); record.Commit(); m_database.Flush(); record = testTable.NewRecord(); record.SetValue( Name, "ZHU3" ); record.Commit(); record = testTable.NewRecord(); record.SetValue( Name, "zhu4" ); record.Commit(); m_database.Shutdown(); DBStructure dbStruct = new DBStructure( "", "MyPal" ); dbStruct.LoadStructure(); m_database = dbStruct.OpenDatabase( ); testTable = m_database.GetTable("People"); Assert.AreEqual( 4, testTable.Count ); } } }