#Region Project Attributes
#MainFormWidth: 600
#MainFormHeight: 600
#LibraryName: SortedMap
#LibraryVersion: 1.0
#LibraryAuthor: KeirS
#End Region
Sub Process_Globals
Private fx As JFX
Private MainForm As Form
Dim RBMap As SortedMap
Dim SubMap As SortedMap
Dim HeadMap As SortedMap
Dim TailMap As SortedMap
Dim MapNavigator As SortedMapNavigator
Dim Sorts As MapSorts
End Sub
Sub AppStart (Form1 As Form, Args() As String)
MainForm = Form1
'MainForm.RootPane.LoadLayout("Layout1") 'Load the layout file.
MainForm.Show
'RBMap.Initialize(Me,"ReverseSort")
'******************************************************************************************************'
'* *'
'* Random Map test. Should test all combinations of node roatations and recolouring nodes *'
'* *
'******************************************************************************************************'
Sorts.Initialize
Log("****Start Random Map Test****")
Dim RndMap As SortedMap
RndMap.Initialize(Sorts,"IntSort")
For cntr = 1 To 1000
Dim Key As Int = Rnd(0,1000000000)
Log("Add: " & Key)
If RndMap.Size > 0 Then
Do While RndMap.ContainsKey(Key) = True
Key = Rnd(0,1000000000)
Loop
RndMap.Put(Key,Key)
Else
RndMap.Put(Key,Key)
End If
Next
Log("****Finisehed Random Map Test***")
MapToLog(RndMap)
'******************************************************************************************************'
'* *'
'* Test SotedMap Methods *'
'* *
'******************************************************************************************************'
RBMap.Initialize(Null,Null)
RBMap.Put("D","D")
RBMap.Put("A","A")
RBMap.Put("C","C")
RBMap.Put("E","E")
RBMap.Put("G","G")
RBMap.Put("B","B")
RBMap.Put("F","F")
Log("****Start SotedMap Methods Test****")
'get Map with keys B To F inclusive
SubMap = RBMap.SubMap("B","F",True)
Log("Keys Between B And F Inclsuive")
MapToLog(SubMap)
'get Map with keys <= F
HeadMap = RBMap.HeadMap("F",True)
Log("Keys <= F")
MapToLog(HeadMap)
'get Map with keys >= G
TailMap = RBMap.TailMap("F",True)
Log("Keys >= F")
MapToLog(TailMap)
Dim s As String = RBMap.LowerKey("F")
Log("First Key Lower Than F: " & s)
s = RBMap.FloorKey("C")
Log("First Key Lower Than or Equal To C: " & s)
s = RBMap.HigherKey("F")
Log("First Key Higher Than F: " & s)
s = RBMap.CeilingKey(" ")
Log("First Key Higher Than Space: " & s)
s = RBMap.FirstKey
Log("First Key In Map: " & s)
s = RBMap.LastKey
Log("Last Key In Map: " & s)
Log("Map Contains G: " & RBMap.ContainsKey("G"))
Log("Map Contains Z: " & RBMap.ContainsKey("Z"))
'Initalize the Navigator
Log(" ")
Log("****ComparatorMap Test****")
Dim RndMap2 As SortedMap
RndMap2.Initialize(Sorts,"IntSort")
For cntr = 1 To 10
Dim Key As Int = Rnd(0,1000)
Log(Key)
If RndMap2.Size > 0 Then
Do While RndMap2.ContainsKey(Key) = True
Key = Rnd(0,1000)
Loop
RndMap2.Put(Key,Key)
Else
RndMap2.Put(Key,Key)
End If
Next
Log("Forward Sort")
MapToLog(RndMap2)
Dim RndMap3 As SortedMap = RndMap2.ComparatorMap(Sorts,"ReverseIntSort")
Log("Reverse Sort:")
MapToLog(RndMap3)
Log("****Finisehed Comparator Map Test***")
Log("****End Of SotedMap Methods Test****")
'******************************************************************************************************'
'* *'
'* Test SortedMapNavigator *'
'* *
'******************************************************************************************************'
Log("***************************************")
Log(" ")
Log("Navigating Tree Forward")
Log(" ")
Log("***************************************")
MapNavigator.Initialize(RBMap,MapIterator.MAP_ITERATE_ASCENDING)
Do While MapNavigator.MoveNext = True
Log(MapNavigator.Key)
Loop
Log("**************END********************")
Log(" ")
Log("***************************************")
Log(" ")
Log("Navigating Tree In Reverse")
Log(" ")
Log("***************************************")
'Reached The End so go back to the begginng
Do While MapNavigator.MovePrev = True
Log(MapNavigator.Key)
Loop
Log("**************END********************")
Log("***************************************")
Log(" ")
Log("Delete And Add Navigation Test")
Log(" ")
Log("***************************************")
MapNavigator.Close
Dim MapNavigator As SortedMapNavigator
RBMap.Put("H","New H")
RBMap.Put("J","New J")
MapNavigator.Initialize(RBMap,MapIterator.MAP_ITERATE_ASCENDING)
Dim MapAdd As Boolean = False
Do While MapNavigator.MoveNext() = True
If MapNavigator.Key = "H" Then
RBMap.Put("I","I")
MapAdd = True
Log(MapNavigator.Key)
Else
Log(MapNavigator.Key)
End If
If MapAdd = True And MapNavigator.Key <> "H" Then
Log("Key Added: " & MapNavigator.Key)
MapAdd = False
End If
Loop
'
MapToLog(RBMap)
Dim MapNavigator As SortedMapNavigator
MapNavigator.Initialize(RBMap,MapIterator.MAP_ITERATE_ASCENDING)
Do While MapNavigator.MoveNext() = True
If MapNavigator.Key = "I" Then
RBMap.Remove("J")
Log("J Removed")
MapAdd = True
Log(MapNavigator.Key)
Else
Log(MapNavigator.Key)
End If
Loop
RBMap.Remove("C")
MapToLog(RBMap)
Log("**************END********************")
End Sub
'function to output mam to a log
Sub MapToLog(M As SortedMap)
Dim Nav As SortedMapNavigator
Dim Cntr As Int = 0
Nav.Initialize(M,MapIterator.MAP_ITERATE_ASCENDING)
Do While Nav.MoveNext()
Cntr = Cntr + 1
Log("Key Value " & Cntr & ": " & Nav.Key)
Loop
Nav.Close
End Sub
'Return true to allow the default exceptions handler to handle the uncaught exception.
Sub Application_Error (Error As Exception, StackTrace As String) As Boolean
Return True
End Sub