diff --git a/TestSuite/IntRange comb.pas b/TestSuite/IntRange comb.pas deleted file mode 100644 index 7334dec37..000000000 --- a/TestSuite/IntRange comb.pas +++ /dev/null @@ -1,8 +0,0 @@ -## -var r := 2..3; -Assert( - r.Cartesian(2) -// .Println - .ZipTuple(||2,2|,|2,3|,|3,2|,|3,3||) - .All(\(a,b)->a.SequenceEqual(b)) -); \ No newline at end of file diff --git a/TestSuite/IntRangeFirst.pas b/TestSuite/IntRangeFirst.pas deleted file mode 100644 index a6ea1bec9..000000000 --- a/TestSuite/IntRangeFirst.pas +++ /dev/null @@ -1,5 +0,0 @@ -begin - var ir := InternalRange(2,5); - - Assert(ir.Take(1).First = 2); -end. \ No newline at end of file diff --git a/TestSuite/RangeT =.pas b/TestSuite/RangeT =.pas new file mode 100644 index 000000000..c214e4e82 --- /dev/null +++ b/TestSuite/RangeT =.pas @@ -0,0 +1,13 @@ +## +Assert( 2..3 = 2..3 ); +Assert( 2.0..3 = 2..3.0 ); +Assert( 'b'..'c' = 'b'..'c' ); + +Assert( 2..3 in |2..3|.ToHashSet ); +Assert( (2..3) as object in |2..3|.Cast&.ToHashSet ); + +Assert( 2.0..3 in |2..3.0|.ToHashSet ); +Assert( (2.0..3) as object in |2..3.0|.Cast&.ToHashSet ); + +Assert( 'b'..'c' in |'b'..'c'|.ToHashSet ); +Assert( ('b'..'c') as object in |'b'..'c'|.Cast&.ToHashSet ); \ No newline at end of file diff --git a/TestSuite/RangeT comb.pas b/TestSuite/RangeT comb.pas new file mode 100644 index 000000000..eab0551c2 --- /dev/null +++ b/TestSuite/RangeT comb.pas @@ -0,0 +1,16 @@ +## +var r := 2..3; +Assert( + r.Cartesian(2) +// .Println + .ZipTuple(||2,2|,|2,3|,|3,2|,|3,3||) + .All(\(a,b)->a.SequenceEqual(b)) +); + +var r2 := 'b'..'c'; +Assert( + r2.Cartesian(2) +// .Println + .ZipTuple(|'bb','bc','cb','cc'|) + .All(\(a,b)->a.SequenceEqual(b)) +); diff --git a/TestSuite/RangeT contents.pas b/TestSuite/RangeT contents.pas new file mode 100644 index 000000000..67c2ad152 --- /dev/null +++ b/TestSuite/RangeT contents.pas @@ -0,0 +1,8 @@ +## var r := 2..3; +Assert( r.SequenceEqual(|2,3|) ); +Assert( r.ToArray.SequenceEqual(|2,3|) ); +Assert( r.AsEnumerable.ToArray.SequenceEqual(|2,3|) ); +var r2 := 'b'..'c'; +Assert( r2.SequenceEqual('bc') ); +Assert( r2.ToArray.SequenceEqual('bc') ); +Assert( r2.AsEnumerable.ToArray.SequenceEqual('bc') ); \ No newline at end of file diff --git a/TestSuite/RangeT count.pas b/TestSuite/RangeT count.pas new file mode 100644 index 000000000..a21a634e7 --- /dev/null +++ b/TestSuite/RangeT count.pas @@ -0,0 +1,10 @@ +## + +Assert( (2..3).Count = 2 ); +Assert( (3..2).Count = 0 ); + +Assert( ('b'..'c').Count = 2 ); +Assert( ('c'..'b').Count = 0 ); + +Assert( (2.0..3).Size = 1 ); +Assert( (3.0..2).Size = -1 ); \ No newline at end of file diff --git a/TestSuite/RangeT empty.pas b/TestSuite/RangeT empty.pas new file mode 100644 index 000000000..b78e15deb --- /dev/null +++ b/TestSuite/RangeT empty.pas @@ -0,0 +1,13 @@ +## + +Assert( (2..2).IsEmpty = false ); +Assert( (2..3).IsEmpty = false ); +Assert( (3..2).IsEmpty = true ); + +Assert( ('b'..'b').IsEmpty = false ); +Assert( ('b'..'c').IsEmpty = false ); +Assert( ('c'..'b').IsEmpty = true ); + +Assert( (2.0..2).IsEmpty = false ); +Assert( (2.0..3).IsEmpty = false ); +Assert( (3.0..2).IsEmpty = true ); \ No newline at end of file diff --git a/TestSuite/RangeT enmr.pas b/TestSuite/RangeT enmr.pas new file mode 100644 index 000000000..2f35e660c --- /dev/null +++ b/TestSuite/RangeT enmr.pas @@ -0,0 +1,7 @@ +## + +Assert( (2..4).Step(2).SequenceEqual(|2,4|) ); +Assert( ('b'..'d').Step(2).SequenceEqual('bd') ); + +Assert( (2..3).Reverse.SequenceEqual(|3,2|) ); +Assert( ('b'..'c').Reverse.SequenceEqual('cb') ); \ No newline at end of file diff --git a/TestSuite/RangeT first.pas b/TestSuite/RangeT first.pas new file mode 100644 index 000000000..791b177aa --- /dev/null +++ b/TestSuite/RangeT first.pas @@ -0,0 +1,3 @@ +## +Assert(InternalRange(2,5).First = 2); +Assert(InternalRange('b','e').First = 'b'); \ No newline at end of file diff --git a/TestSuite/RangeT in.pas b/TestSuite/RangeT in.pas new file mode 100644 index 000000000..fa0862cbe --- /dev/null +++ b/TestSuite/RangeT in.pas @@ -0,0 +1,23 @@ +## + +var ri := 2..3; +Assert( 1 not in ri ); +Assert( 2 in ri ); +Assert( 2.5 in ri ); +Assert( 3 in ri ); +Assert( 4 not in ri ); + +var rc := 'b'..'c'; +Assert( 'a' not in rc ); +Assert( 'b' in rc ); +Assert( 'c' in rc ); +Assert( 'd' not in rc ); + +var rr := 2.0..3; +Assert( 1 not in rr ); +Assert( 2 in rr ); +Assert( 2.5 in rr ); +Assert( 3 in rr ); +Assert( 4 not in rr ); + +Assert( 2 in 2.0..2 ); \ No newline at end of file diff --git a/TestSuite/RangeT tos.pas b/TestSuite/RangeT tos.pas new file mode 100644 index 000000000..2db9e6173 --- /dev/null +++ b/TestSuite/RangeT tos.pas @@ -0,0 +1,4 @@ +## +Assert( $'{2..3}' = '2..3' ); +Assert( $'{2.0..3}' = '2..3' ); +Assert( $'{''b''..''c''}' = '''b''..''c''' ); \ No newline at end of file