|
- <%
- Class EnumerableHelper_Tests
- Public Sub Setup : End Sub
- Public Sub Teardown : End Sub
-
- Public Function TestCaseNames
- TestCaseNames = Array("Test_Enumerable_Function_Returns_EnumerableHelper_Instance", _
- "Test_Map_Returns_EnumerableHelper_Instance", _
- "Test_Map_Lambda", _
- "Test_Map_Proc", _
- "Test_Max_Lambda", _
- "Test_Max_Proc", _
- "Test_Min_Lambda", _
- "Test_Min_Proc", _
- "Test_Take", _
- "Test_TakeWhile_Lambda", _
- "Test_TakeWhile_Proc", _
- "Test_Sum", _
- "Test_All", _
- "Test_Any", _
- "Test_Where_Lambda", _
- "Test_Where_Proc", _
- "Test_Count", _
- "Test_First", _
- "Test_Last", _
- "Test_Chained")
- End Function
-
- '---------------------------------------------------------------------------------------------------------------------
- Public Sub Test_Enumerable_Function_Returns_EnumerableHelper_Instance(T)
- dim list : set list = new LinkedList_Class
- dim E : set E = Enumerable(list)
- T.Assert typename(E) = "EnumerableHelper_Class", "did not return correct instance"
- T.Assert typename(E.Data) = "LinkedList_Class", "Data() is of type " & typename(E.Data)
- End Sub
-
- '---------------------------------------------------------------------------------------------------------------------
- Public Sub Test_Map_Returns_EnumerableHelper_Instance(T)
- dim list : set list = new LinkedList_Class
- dim E : set E = Enumerable(list).Map("")
- T.Assert typename(E) = "EnumerableHelper_Class", "returned type " & typename(E)
- End Sub
-
- '---------------------------------------------------------------------------------------------------------------------
- Public Sub Test_Map_Lambda(T)
- dim list : set list = OrderedList(10)
- dim E : set E = Enumerable(list).Map("dim x : x = item_ + 1 : V_ = x")
-
- T.Assert 10 = E.Data.Count, "count: " & E.Data.Count
-
- dim A : A = list.To_Array()
- dim B : B = E.Data.To_Array()
-
- T.Assert UBound(A) = UBound(B), "A = " & UBound(A) & ", B = " & UBound(B)
-
- dim i
- For i = 0 to UBound(A)
- T.Assert B(i) = A(i) + 1, "B(" & i & ") = " & B(i) & ", A(" & i & ") = " & A(i)
- Next
- End Sub
-
- '---------------------------------------------------------------------------------------------------------------------
- Public Sub Test_Map_Proc(T)
- dim list : set list = OrderedList(10)
- dim E : set E = Enumerable(list).Map(GetRef("AddOne"))
-
- T.Assert 10 = E.Data.Count, "count: " & E.Data.Count
-
- dim A : A = list.To_Array()
- dim B : B = E.Data.To_Array()
-
- T.Assert UBound(A) = UBound(B), "A = " & UBound(A) & ", B = " & UBound(B)
-
- dim i
- For i = 0 to UBound(A)
- T.Assert B(i) = A(i) + 1, "B(" & i & ") = " & B(i) & ", A(" & i & ") = " & A(i)
- Next
- End Sub
-
- '---------------------------------------------------------------------------------------------------------------------
- Public Sub Test_Max_Lambda(T)
- dim list : set list = new LinkedList_Class
- list.Push "Alice"
- list.Push "Bob"
- list.Push "Charlie"
- list.Push "Doug"
-
- dim val : val = Enumerable(list).Max("len(item_)")
- T.Assert 7 = val, "val = " & val
- End Sub
-
- '---------------------------------------------------------------------------------------------------------------------
- Public Sub Test_Max_Proc(T)
- dim list : set list = new LinkedList_Class
- list.Push "Alice"
- list.Push "Bob"
- list.Push "Charlie"
- list.Push "Doug"
-
- dim val : val = Enumerable(list).Max(GetRef("GetLength"))
- T.Assert 7 = val, "val = " & val
- End Sub
-
- '---------------------------------------------------------------------------------------------------------------------
- Public Sub Test_Min_Lambda(T)
- dim list : set list = new LinkedList_Class
- list.Push "Alice"
- list.Push "Bob"
- list.Push "Charlie"
- list.Push "Doug"
-
- dim val : val = Enumerable(list).Min("len(item_)")
- T.Assert 3 = val, "val = " & val
- End Sub
-
- '---------------------------------------------------------------------------------------------------------------------
- Public Sub Test_Min_Proc(T)
- dim list : set list = new LinkedList_Class
- list.Push "Alice"
- list.Push "Bob"
- list.Push "Charlie"
- list.Push "Doug"
-
- dim val : val = Enumerable(list).Min(GetRef("GetLength"))
- T.Assert 3 = val, "val = " & val
- End Sub
-
- '---------------------------------------------------------------------------------------------------------------------
- Public Sub Test_Take(T)
- dim list : set list = OrderedList(3)
-
- dim firstTwo : set firstTwo = Enumerable(list).Take(2)
-
- T.Assert typename(firstTwo) = "EnumerableHelper_Class", "typename = " & typename(firstTwo)
-
- dim L : set L = firstTwo.Data
- T.AssertEqual 2, L.Count, "Count = " & L.Count
- T.AssertEqual 1, L.Front, "Front = " & L.Front
- T.AssertEqual 2, L.Back, "Back = " & L.Back
- End Sub
-
- '---------------------------------------------------------------------------------------------------------------------
- Public Sub Test_TakeWhile_Lambda(T)
- dim list : set list = OrderedList(5)
- dim firstTwo : set firstTwo = Enumerable(list).TakeWhile("item_ < 3")
-
- T.Assert typename(firstTwo) = "EnumerableHelper_Class", "typename = " & typename(firstTwo)
-
- dim L : set L = firstTwo.Data
- T.AssertEqual 2, L.Count, "Count = " & L.Count
- T.AssertEqual 1, L.Front, "Front = " & L.Front
- T.AssertEqual 2, L.Back, "Back = " & L.Back
- End Sub
-
- '---------------------------------------------------------------------------------------------------------------------
- Public Sub Test_TakeWhile_Proc(T)
- dim list : set list = OrderedList(5)
- dim firstTwo : set firstTwo = Enumerable(list).TakeWhile(GetRef("IsLessThanThree"))
-
- T.Assert typename(firstTwo) = "EnumerableHelper_Class", "typename = " & typename(firstTwo)
-
- dim L : set L = firstTwo.Data
- T.AssertEqual 2, L.Count, "Count = " & L.Count
- T.AssertEqual 1, L.Front, "Front = " & L.Front
- T.AssertEqual 2, L.Back, "Back = " & L.Back
- End Sub
-
- '---------------------------------------------------------------------------------------------------------------------
- Public Sub Test_Sum(T)
- dim list : set list = OrderedList(5)
- dim val : val = Enumerable(list).Sum("item_")
- T.AssertEqual val, 15, "simple: val = " & val
-
- val = Enumerable(list).Sum("item_ * item_")
- T.AssertEqual val, 55, "squares: val = " & val
- End Sub
-
- '---------------------------------------------------------------------------------------------------------------------
- Public Sub Test_All(T)
- dim list : set list = new LinkedList_Class
- list.Push "Alice"
- list.Push "Bob"
- list.Push "Charlie"
- list.Push "Doug"
-
- dim val
-
- val = Enumerable(list).All("len(item_) >= 3")
- T.Assert val, "Len >= 3: val = " & val
-
- val = Enumerable(list).All("len(item_) = 3")
- T.AssertFalse val, "Len = 3: val = " & val
- End Sub
-
- '---------------------------------------------------------------------------------------------------------------------
- Public Sub Test_Any(T)
- dim list : set list = new LinkedList_Class
- list.Push "Alice"
- list.Push "Bob"
- list.Push "Charlie"
- list.Push "Doug"
-
- dim val
-
- val = Enumerable(list).Any("len(item_) >= 3")
- T.Assert val, "Len >= 3: val = " & val
-
- val = Enumerable(list).Any("len(item_) < 3")
- T.AssertFalse val, "Len < 3: val = " & val
- End Sub
-
- '---------------------------------------------------------------------------------------------------------------------
- Public Sub Test_Where_Lambda(T)
- dim list : set list = new LinkedList_Class
- list.Push "Alice"
- list.Push "Bob"
- list.Push "Charlie"
- list.Push "Doug"
-
- dim list2
-
- set list2 = Enumerable(list).Where("len(item_) > 4")
- T.AssertEqual 2, list2.Data.Count, "list2.Count = " & list2.Data.Count
-
- T.AssertEqual "Alice", list2.Data.Front(), "list2.Data.Front = " & list2.Data.Front()
- T.AssertEqual "Charlie", list2.Data.Back(), "list2.Data.Front = " & list2.Data.Back()
- End Sub
-
- '---------------------------------------------------------------------------------------------------------------------
- Public Sub Test_Where_Proc(T)
- dim list : set list = new LinkedList_Class
- list.Push "Alice"
- list.Push "Bob"
- list.Push "Charlie"
- list.Push "Doug"
-
- dim E : set E = Enumerable(list).Where(GetRef("IsMoreThanFourChars"))
- T.AssertEqual 2, E.Data.Count, "E.Count = " & E.Data.Count
- T.AssertEqual "Alice", E.Data.Front(), "E.Data.Front = " & E.Data.Front()
- T.AssertEqual "Charlie", E.Data.Back(), "E.Data.Front = " & E.Data.Back()
- End Sub
-
- '---------------------------------------------------------------------------------------------------------------------
- Public Sub Test_Count(T)
- dim list : set list = OrderedList(10)
- dim E : set E = Enumerable(list)
- T.AssertEqual 10, E.Count(), empty
- End Sub
-
- '---------------------------------------------------------------------------------------------------------------------
- Public Sub Test_First(T)
- dim list : set list = OrderedList(10)
- dim E : set E = Enumerable(list)
- T.AssertEqual 1, E.First(), empty
- End Sub
-
- '---------------------------------------------------------------------------------------------------------------------
- Public Sub Test_Last(T)
- dim list : set list = OrderedList(10)
- dim E : set E = Enumerable(list)
- T.AssertEqual 10, E.Last(), empty
- End Sub
-
- '---------------------------------------------------------------------------------------------------------------------
- Public Sub Test_Chained(T)
- dim list : set list = OrderedList(10)
- dim it, item
-
- dim A : set A = Enumerable(list).Take(5).Where("item_ mod 2 <> 0")
- T.AssertEqual 3, A.Data.Count, "A.Count = " & A.Data.Count
- set it = A.Data.Iterator
- item = it.GetNext()
- T.AssertEqual 1, item, "A 1st item = " & item
- item = it.GetNext()
- T.AssertEqual 3, item, "A 2nd item = " & item
- item = it.GetNext()
- T.AssertEqual 5, item, "A 3rd item = " & item
-
- dim B : set B = Enumerable(list).Take(5).Select("V_ = item_ * item_")
- T.AssertEqual 5, B.Data.Count, "B.Count = " & B.Data.Count
- set it = B.Data.Iterator
- item = it.GetNext()
- T.AssertEqual 1, item, "B 1st item = " & item
- item = it.GetNext()
- T.AssertEqual 4, item, "B 2nd item = " & item
- item = it.GetNext()
- T.AssertEqual 9, item, "B 3rd item = " & item
- item = it.GetNext()
- T.AssertEqual 16, item, "B 4th item = " & item
- item = it.GetNext()
- T.AssertEqual 25, item, "B 5th item = " & item
-
- dim list2 : set list2 = new LinkedList_Class
- list2.Push "Alice"
- list2.Push "Bob"
- list2.Push "Charlie"
- list2.Push "Doug"
- list2.Push "Edward"
- list2.Push "Franklin"
- list2.Push "George"
- list2.Push "Hal"
- list2.Push "Isaac"
- list2.Push "Jeremy"
-
- dim C : C = Enumerable(list2) _
- .Where("len(item_) > 5") _
- .Map("set V_ = new ChainedExample_Class : V_.Data = item_ : V_.Length = len(item_)") _
- .Max("item_.Length")
-
- T.AssertEqual 8, C, "C"
- End Sub
-
-
- End Class
-
-
- Class ChainedExample_Class
- Public Data
- Public Length
- End Class
-
-
- Function OrderedList(maxnum)
- dim list : set list = new LinkedList_Class
- dim i
- For i = 1 to maxnum
- list.Push i
- Next
- set OrderedList = list
- End Function
-
- Function AddOne(x)
- AddOne = x + 1
- End Function
-
- Function GetLength(s)
- GetLength = Len(s)
- End Function
-
- Function IsLessThanThree(x)
- IsLessThanThree = x < 3
- End Function
-
- Function IsMoreThanFourChars(s)
- IsMoreThanFourChars = Len(s) > 4
- End Function
-
-
- %>
|