#!/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!"