#!/usr/bin/ruby
# Tests for `each_prime(from, to, { ... })`
10.times {
var from = 1e5.irand
var to = 1e5.irand
say "#{from} - #{to}"
var P = gather {
var pi = each_prime(from, to, {|p|
take(p)
})
assert_eq(pi, prime_count(from, to))
}
assert_eq(P, primes(from, to))
}
assert_eq(
gather {
1e4.primes_each {|p|
take(p)
}
},
1e4.primes
)
assert_eq(
gather {
var pi = primes_each(-10, 100, {|p|
take(p)
})
assert_eq(pi, 25)
},
100.primes
)
assert_eq(
gather {
var pi = primes_each(-100, {|p|
take(p)
})
assert_eq(pi, 0)
},
[]
)
assert_eq(
gather {
primes_each(503, 503, {|p|
take(p)
})
},
[503]
)
assert_eq(
gather {
var pi = primes_each(503+1, 503, {|p|
take(p)
})
assert_eq(pi, 0)
},
[]
)
assert_eq(
gather {
primes_each(503-1, 503, {|p|
take(p)
})
},
[503]
)
assert_eq(
gather {
primes_each(503, 503-1, {|p|
take(p)
})
},
[]
)
assert_eq(
gather {
primes_each(503.prev_prime, 503-1, {|p|
take(p)
})
},
[499]
)
assert_eq(
gather {
primes_each(503.prev_prime + 1, 503-1, {|p|
take(p)
})
},
[]
)
assert_eq(
gather {
var pi = primes_each(503-1, 503+1, {|p|
take(p)
})
assert_eq(pi, 1)
},
[503]
)
assert_eq(
gather {
var pi = primes_each(503*863, 503*863, {|p|
take(p)
})
assert_eq(pi, 0)
},
[]
)
assert_eq(
gather {
var pi = primes_each(1e7.prev_prime + 1, 1e7.next_prime - 1, {|p|
take(p)
})
assert_eq(pi, 0)
},
[]
)
assert_eq(
gather {
var pi = primes_each(1e20, 1e20 + 1000, {|p|
take(p)
})
assert_eq(pi, prime_count(1e20, 1e20 + 1000))
},
primes(1e20, 1e20 + 1000)
)
say "** Test passed!"