[JEDI.NET-commits] nunit/source Jedi.IO.IniFiles.NUnit.pas,1.1,1.2
Status: Pre-Alpha
Brought to you by:
jedi_mbe
From: Marcel B. <jed...@us...> - 2005-01-23 11:08:59
|
Update of /cvsroot/jedidotnet/nunit/source In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10394/nunit/source Modified Files: Jedi.IO.IniFiles.NUnit.pas Log Message: Added BufferedIniFile test-set. Index: Jedi.IO.IniFiles.NUnit.pas =================================================================== RCS file: /cvsroot/jedidotnet/nunit/source/Jedi.IO.IniFiles.NUnit.pas,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** Jedi.IO.IniFiles.NUnit.pas 22 Jan 2005 17:59:50 -0000 1.1 --- Jedi.IO.IniFiles.NUnit.pas 23 Jan 2005 11:08:50 -0000 1.2 *************** *** 10,17 **** type [TestFixture] MemoryBased = class strict private - class var rm: ResourceManager; class constructor Create; public [Test] procedure KeyCollection; --- 10,40 ---- type [TestFixture] + BufferedFile = class + strict protected + filePath: string; + mainIniFilePath: string; + public + [TestFixtureSetUp] + procedure CreateDir; + [TestFixtureTearDown] + procedure DeleteDir; + public + [SetUp] + procedure CreateTempFileCopy; + [TearDown] + procedure DeleteTempFileCopy; + public + [Test] procedure AutoFlush; + [Test] procedure AutoReload; + [Test] procedure LoadSaveLoad; + end; + + type + [TestFixture] MemoryBased = class strict private class constructor Create; + protected + class var rm: ResourceManager; public [Test] procedure KeyCollection; *************** *** 26,30 **** System.Collections, System.IO, ! System.Text; { MemoryBased } --- 49,148 ---- System.Collections, System.IO, ! System.Text, ! System.Threading; ! ! procedure BufferedFile.AutoFlush; ! var ! ini: BufferedIniFile; ! lastWriteDate: DateTime; ! begin ! ini := BufferedIniFile.Create(mainIniFilePath, Timeout.Infinite, 2000); ! lastWriteDate := &File.GetLastWriteTimeUtc(mainIniFilePath); ! Thread.Sleep(2100); // Slightly longer than the AutoFlush interval. ! Assert.AreEqual(lastWriteDate, &File.GetLastWriteTimeUtc(mainIniFilePath), 'AutoFlush with no changes.'); ! ini.Write('[AutoFlush]', 'LastWriteDate', lastWriteDate); ! Assert.AreEqual(lastWriteDate, &File.GetLastWriteTimeUtc(mainIniFilePath), 'AutoFlush directly after changes.'); ! Thread.Sleep(1000); // Less than the AutoFlush interval. ! Assert.AreEqual(lastWriteDate, &File.GetLastWriteTimeUtc(mainIniFilePath), 'AutoFlush 1s after changes.'); ! Thread.Sleep(1000); // Together with previous sleep cycles, slightly longer than the AutoFlush interval. ! Assert.IsTrue(lastWriteDate< &File.GetLastWriteTimeUtc(mainIniFilePath), 'no AutoFlush 2s after changes.'); ! lastWriteDate := &File.GetLastWriteTimeUtc(mainIniFilePath); ! Thread.Sleep(2100); // Slightly longer than the AutoFlush interval. ! Assert.AreEqual(lastWriteDate, &File.GetLastWriteTimeUtc(mainIniFilePath), 'AutoFlush 4s after changes.'); ! end; ! ! procedure BufferedFile.AutoReload; ! var ! ini1: BufferedIniFile; ! ini2: BufferedIniFile; ! ini3: BufferedIniFile; ! begin ! ini1 := BufferedIniFile.Create(mainIniFilePath, 500, Timeout.Infinite); ! ini2 := BufferedIniFile.Create(mainIniFilePath, Timeout.Infinite, Timeout.Infinite); ! ini2.Write('SecondInstance', 'Value', 1.23); ! Thread.Sleep(510); ! Assert.IsFalse(ini1.SectionExists('SecondInstance'), 'Ini1 contains section before possible Reload.'); ! ini1.Write('FirstInstance', 'Value', 5.67); ! Assert.IsTrue(ini1.SectionExists('FirstInstance'), 'Ini1 should contain FirstInstance section.'); ! ini2.Free; ! Thread.Sleep(500); ! Assert.IsTrue(ini1.SectionExists('FirstInstance'), 'Ini1 should contain FirstInstance section after Reload.'); ! Assert.IsTrue(ini1.SectionExists('SecondInstance'), 'Ini1 should contain SecondInstance section after Reload.'); ! ini1.Free; ! ini3 := BufferedIniFile.Create(mainIniFilePath, Timeout.Infinite, Timeout.Infinite); ! Assert.IsTrue(ini1.SectionExists('FirstInstance'), 'Ini3 should contain FirstInstance section.'); ! Assert.IsTrue(ini1.SectionExists('SecondInstance'), 'Ini3 should contain SecondInstance section.'); ! ini3.Free; ! end; ! ! procedure BufferedFile.CreateDir; ! begin ! filePath := System.String.Join(Path.DirectorySeparatorChar, [Path.GetTempPath, 'Jedi.NET', 'ini_tests']); ! Directory.CreateDirectory(filePath); ! mainIniFilePath := System.String.Join(Path.DirectorySeparatorChar, [filePath, 'main.ini']); ! end; ! ! procedure BufferedFile.CreateTempFileCopy; ! var ! mem: MemoryIniFile; ! begin ! mem := MemoryIniFile.Create; ! mem.Load(StringReader.Create(MemoryBased.rm.GetString('initest'))); ! mem.Save(mainIniFilePath); ! end; ! ! procedure BufferedFile.DeleteDir; ! begin ! Directory.GetParent(filePath).Delete(True); ! end; ! ! procedure BufferedFile.DeleteTempFileCopy; ! begin ! &File.Delete(mainIniFilePath); ! end; ! ! procedure BufferedFile.LoadSaveLoad; ! var ! ini: BufferedIniFile; ! ini2: BufferedIniFile; ! begin ! ini := BufferedIniFile.Create(mainIniFilePath, Timeout.Infinite, Timeout.Infinite); ! Assert.IsTrue(ini.SectionExists('Basics'), 'Section ''{0}'' not found', ['Basics']); ! Assert.IsTrue(ini.KeyExists('MyTestString'), 'Key ''{0}'' not found.', ['MyTestString']); ! Assert.AreEqual( ! 'Abcdef ghij klmnop; 1+1=2 #a comment, or maybe not, depending on settings', ! ini.ReadString('MyTestString'), ! 'Key ''{0}''.', ! ['MyTestString']); ! ini.Write('New section', 'IntKey', 15); ! Assert.IsTrue(ini.SectionExists('New section'), 'New section not created.'); ! Assert.IsTrue(ini.KeyExists('New section', 'IntKey'), 'IntKey not created.'); ! Assert.AreEqual(15, ini.ReadInt('New section', 'IntKey'), 'Value of [New section].IntKey incorrect.'); ! ini.Free; // should be written ! ini2 := BufferedIniFile.Create(mainIniFilePath, Timeout.Infinite, Timeout.Infinite); ! Assert.IsTrue(ini2.SectionExists('New section'), 'New section not saved.'); ! Assert.IsTrue(ini2.KeyExists('New section', 'IntKey'), 'IntKey not saved.'); ! Assert.AreEqual(15, ini2.ReadInt('New section', 'IntKey'), 'Value of [New section].IntKey incorrectly saved.'); ! end; { MemoryBased } |