Merge pull request #2973 from SunSerega/Range-tests

Больше тестов для `Range` типов
This commit is contained in:
Mikhalkovich Stanislav 2023-12-05 09:09:17 +03:00 committed by GitHub
commit d93371d03c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 97 additions and 13 deletions

View file

@ -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))
);

View file

@ -1,5 +0,0 @@
begin
var ir := InternalRange(2,5);
Assert(ir.Take(1).First = 2);
end.

13
TestSuite/RangeT =.pas Normal file
View file

@ -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&<object>.ToHashSet );
Assert( 2.0..3 in |2..3.0|.ToHashSet );
Assert( (2.0..3) as object in |2..3.0|.Cast&<object>.ToHashSet );
Assert( 'b'..'c' in |'b'..'c'|.ToHashSet );
Assert( ('b'..'c') as object in |'b'..'c'|.Cast&<object>.ToHashSet );

16
TestSuite/RangeT comb.pas Normal file
View file

@ -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))
);

View file

@ -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') );

View file

@ -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 );

View file

@ -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 );

View file

@ -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') );

View file

@ -0,0 +1,3 @@
##
Assert(InternalRange(2,5).First = 2);
Assert(InternalRange('b','e').First = 'b');

23
TestSuite/RangeT in.pas Normal file
View file

@ -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 );

4
TestSuite/RangeT tos.pas Normal file
View file

@ -0,0 +1,4 @@
##
Assert( $'{2..3}' = '2..3' );
Assert( $'{2.0..3}' = '2..3' );
Assert( $'{''b''..''c''}' = '''b''..''c''' );