123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- #!/usr/bin/ruby
- # Test scalar context (provided by the unary + operator).
- var TimePiece = require('Time::Piece')
- var d = TimePiece.strptime("2020-02-02", "%Y-%m-%d")
- var a = [d.add(TimePiece.ONE_DAY)]
- var b = +d.add(TimePiece.ONE_DAY)
- assert_eq(a, [0, 0, 0, 3, 1, 120, 1, 33, 0])
- assert_eq(b.strftime("%Y-%m-%d"), "2020-02-03")
- var palindates = Enumerator({ |f|
- loop {
- f(d) if d.strftime("%Y%m%d").is_palindrome
- d = +d.add(TimePiece.ONE_DAY)
- }
- })
- assert_eq(palindates.first(2).map { .strftime("%Y-%m-%d") }, ["2020-02-02", "2021-12-02"])
- do {
- func foo(n) {
- (n, n+1, n+2)
- }
- var a = foo(42) # first element
- var b = +foo(42) # last element
- assert_eq(a, 42)
- assert_eq(b, 44)
- }
- do {
- require('Algorithm::Combinatorics')
- var data = %w(a b c)
- var iter = +%S<Algorithm::Combinatorics>.permutations(data)
- assert_eq(
- gather {
- while (var p = iter.next) {
- take(p)
- }
- },
- data.permutations)
- assert_eq([%S<Algorithm::Combinatorics>.permutations(data)], data.permutations) # list context
- }
- do {
- require('Algorithm::Loops')
- var arr1 = %w(a b c)
- var arr2 = %w(x y z)
- var iter = +%S<Algorithm::Loops>.NestedLoops([arr1, arr2])
- assert_eq(
- gather {
- while (var *car = iter.call) {
- take(car.clone)
- }
- },
- [arr1, arr2].cartesian
- )
- assert_eq([%S<Algorithm::Loops>.NestedLoops([arr1, arr2], {|*a| a })], [arr1, arr2].cartesian) # list context
- }
- say "** Test passed!"
|