Index: tests/natools-s_expressions-cache_tests.adb ================================================================== --- tests/natools-s_expressions-cache_tests.adb +++ tests/natools-s_expressions-cache_tests.adb @@ -76,10 +76,11 @@ begin Default_Instantiation (Report); Debug_Instantiation (Report); Descriptor_Interface (Report); Lockable_Interface (Report); + Replayable_Interface (Report); end All_Tests; ----------------------- -- Inidividual Tests -- @@ -334,6 +335,52 @@ end; exception when Error : others => Test.Report_Exception (Error); end Lockable_Interface; + + procedure Replayable_Interface (Report : in out NT.Reporter'Class) is + Test : NT.Test := Report.Item ("Replayable.Descriptor insterface"); + begin + declare + Cache : Caches.Reference; + First, Second : Caches.Cursor; + begin + Cache.Append_Atom (To_Atom ("begin")); + Cache.Open_List; + Cache.Append_Atom (To_Atom ("command")); + Cache.Open_List; + Cache.Append_Atom (To_Atom ("first")); + Cache.Append_Atom (To_Atom ("second")); + Cache.Close_List; + Cache.Close_List; + Cache.Append_Atom (To_Atom ("end")); + + First := Cache.First; + + Test_Tools.Test_Atom_Accessors (Test, First, To_Atom ("begin"), 0); + + Test_Tools.Next_And_Check (Test, First, Events.Open_List, 1); + Test_Tools.Test_Atom_Accessor_Exceptions (Test, First); + Test_Tools.Next_And_Check (Test, First, To_Atom ("command"), 1); + Second := First.Duplicate; + Test_Tools.Next_And_Check (Test, First, Events.Open_List, 2); + Test_Tools.Next_And_Check (Test, First, To_Atom ("first"), 2); + Test_Tools.Next_And_Check (Test, First, To_Atom ("second"), 2); + Test_Tools.Next_And_Check (Test, First, Events.Close_List, 1); + Test_Tools.Next_And_Check (Test, Second, Events.Open_List, 2); + Test_Tools.Next_And_Check (Test, Second, To_Atom ("first"), 2); + Test_Tools.Next_And_Check (Test, Second, To_Atom ("second"), 2); + Test_Tools.Next_And_Check (Test, First, Events.Close_List, 0); + Test_Tools.Next_And_Check (Test, Second, Events.Close_List, 1); + Test_Tools.Test_Atom_Accessor_Exceptions (Test, Second); + Test_Tools.Next_And_Check (Test, Second, Events.Close_List, 0); + Test_Tools.Next_And_Check (Test, Second, To_Atom ("end"), 0); + Test_Tools.Next_And_Check (Test, First, To_Atom ("end"), 0); + Test_Tools.Next_And_Check (Test, First, Events.End_Of_Input, 0); + Test_Tools.Next_And_Check (Test, Second, Events.End_Of_Input, 0); + end; + exception + when Error : others => Test.Report_Exception (Error); + end Replayable_Interface; + end Natools.S_Expressions.Cache_Tests; Index: tests/natools-s_expressions-cache_tests.ads ================================================================== --- tests/natools-s_expressions-cache_tests.ads +++ tests/natools-s_expressions-cache_tests.ads @@ -30,7 +30,8 @@ procedure Debug_Instantiation (Report : in out NT.Reporter'Class); procedure Default_Instantiation (Report : in out NT.Reporter'Class); procedure Descriptor_Interface (Report : in out NT.Reporter'Class); procedure Lockable_Interface (Report : in out NT.Reporter'Class); + procedure Replayable_Interface (Report : in out NT.Reporter'Class); end Natools.S_Expressions.Cache_Tests;