Skip to content

Commit 9388761

Browse files
committed
Moved tests, benches to separate folders
1 parent 985f389 commit 9388761

File tree

3 files changed

+141
-136
lines changed

3 files changed

+141
-136
lines changed

benches/benches.rs

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#![feature(test)]
2+
3+
extern crate test;
4+
extern crate primes;
5+
use primes::PrimeSet;
6+
7+
use test::Bencher;
8+
9+
#[bench]
10+
fn bench_primes(b : &mut Bencher){
11+
b.iter(|| {
12+
let mut pset = PrimeSet::new();
13+
let (_, _) = pset.find(1_000_000);
14+
//~ let (idx, n) = pset.find(1_000_000);
15+
//~ println!("Prime {}: {}", idx, n);
16+
})
17+
}
18+

src/lib.rs

+1-136
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ This also provides a few functions unconnected to `PrimeSet`, which will be fast
6060
case, but slower in the long term as they do not use any caching of primes.
6161
6262
*/
63-
#![feature(step_by,test)]
63+
#![feature(step_by)]
6464
#![doc(html_root_url = "https://wackywendell.github.io/primes/")]
6565

6666
#[warn(non_camel_case_types)]
@@ -69,15 +69,10 @@ case, but slower in the long term as they do not use any caching of primes.
6969
#[warn(non_upper_case_globals)]
7070
#[warn(missing_docs)]
7171

72-
extern crate test;
73-
7472
use std::ops::Index;
7573
use std::slice;
7674
use std::cmp::Ordering::{Equal,Less,Greater};
7775

78-
#[cfg(test)]
79-
use test::Bencher;
80-
8176
/** A prime generator, using the Sieve of Eratosthenes.
8277
8378
Create with `let mut pset = PrimeSet::new()`, and then use `pset.iter()` to iterate over all primes.
@@ -298,133 +293,3 @@ pub fn is_prime(n : u64) -> bool {
298293
if n <= 1 {return false;}
299294
firstfac(n) == n
300295
}
301-
302-
#[test]
303-
fn test_iter(){
304-
let mut pset = PrimeSet::new();
305-
let first_few = [2u64,3,5,7,11,13,17,19,23];
306-
for (m, &n) in pset.iter().zip(first_few.iter()) {
307-
assert_eq!(m, n);
308-
}
309-
}
310-
311-
#[test]
312-
fn test_find(){
313-
let mut pset = PrimeSet::new();
314-
315-
// pset is empty, so it needs to generate the primes
316-
assert_eq!(pset.find_vec(1000), None);
317-
318-
let (ix_exp, n_exp) = (168, 1009);
319-
320-
assert_eq!(pset.find(1000), (ix_exp, n_exp));
321-
assert_eq!(pset.find(n_exp), (ix_exp, n_exp));
322-
323-
// We shouldn't have gone beyond 1009
324-
{
325-
let plst = pset.list();
326-
let plen = plst.len();
327-
assert_eq!(plen, ix_exp+1);
328-
329-
assert_eq!(plst[plen-1], n_exp);
330-
}
331-
332-
assert_eq!(pset.find_vec(n_exp), Some((ix_exp, n_exp)));
333-
}
334-
335-
#[test]
336-
fn test_primes(){
337-
let mut pset = PrimeSet::new();
338-
339-
// note: some are repeated, because the pset list grows as it goes
340-
341-
assert!(!pset.is_prime(1));
342-
assert!(!is_prime(1));
343-
assert!(pset.is_prime(2));
344-
assert!(is_prime(2));
345-
assert!(pset.is_prime(13));
346-
assert!(is_prime(13));
347-
assert!(!pset.is_prime(45));
348-
assert!(!is_prime(45));
349-
assert!(!pset.is_prime(13*13));
350-
assert!(!is_prime(13*13));
351-
assert!(pset.is_prime(13));
352-
assert!(pset.is_prime(7));
353-
assert!(is_prime(7));
354-
assert!(!pset.is_prime(9));
355-
assert!(!is_prime(9));
356-
assert!(pset.is_prime(5));
357-
assert!(is_prime(5));
358-
359-
assert!(pset.is_prime(954377));
360-
assert!(pset.is_prime(954379));
361-
assert!(!pset.is_prime(954377*954379));
362-
363-
assert!(!is_prime(18409199*18409201));
364-
assert!(pset.is_prime(18409199));
365-
assert!(pset.is_prime(18409201));
366-
367-
assert!(!pset.is_prime(2147483643));
368-
assert!(pset.is_prime(2147483647));
369-
assert!(!pset.is_prime(2147483649));
370-
assert!(!pset.is_prime(63061493));
371-
assert!(!pset.is_prime(63061491));
372-
assert!(pset.is_prime(63061489));
373-
assert!(!pset.is_prime(63061487));
374-
assert!(!pset.is_prime(63061485));
375-
assert!(pset.is_prime(2147483647));
376-
assert!(pset.is_prime(63061489));
377-
assert!(!is_prime(63061489 * 2147483647));
378-
assert!(!is_prime(63061489 * 63061489));
379-
// assert!(!is_prime(2147483647 * 2147483647)); // Runs very long
380-
}
381-
382-
#[test]
383-
fn test_factors(){
384-
let mut pset = PrimeSet::new();
385-
386-
let ns = [ (1, vec!()),
387-
(2, vec!(2)),
388-
(3, vec!(3)),
389-
(4, vec!(2,2)),
390-
(5, vec!(5)),
391-
(6, vec!(2,3)),
392-
(9, vec!(3,3)),
393-
(12, vec!(2,2,3)),
394-
(121, vec!(11,11)),
395-
(144, vec!(2,2,2,2,3,3)),
396-
(10_000_000, vec!(2,2,2,2,2,2,2,5,5,5,5,5,5,5)),
397-
(100, vec!(2,2,5,5)),
398-
(121, vec!(11, 11)),
399-
];
400-
401-
// Test unique factors
402-
for &(n, ref v) in ns.iter(){
403-
println!("{}: {:?}", n, v);
404-
assert_eq!(pset.prime_factors(n), *v);
405-
assert_eq!(factors(n), *v);
406-
407-
let unique_factors = factors_uniq(n);
408-
409-
// Get unique factors from the lists we made above
410-
let mut unique_factors_exp : Vec<u64> = v.iter().map(|&x| {x}).collect();
411-
unique_factors_exp.dedup();
412-
413-
assert_eq!(unique_factors, unique_factors_exp);
414-
}
415-
416-
pset = PrimeSet::new();
417-
assert_eq!(pset.prime_factors(12), vec!(2,2,3));
418-
419-
}
420-
421-
422-
#[bench]
423-
fn bench_primes(b : &mut Bencher){
424-
b.iter(|| {
425-
let mut pset = PrimeSet::new();
426-
let (_, _) = pset.find(1_000_000);
427-
//~ let (idx, n) = pset.find(1_000_000);
428-
//~ println!("Prime {}: {}", idx, n);
429-
})
430-
}

tests/basictests.rs

+122
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
extern crate primes;
2+
3+
use primes::{PrimeSet,is_prime,factors,factors_uniq};
4+
5+
#[test]
6+
fn test_iter(){
7+
let mut pset = PrimeSet::new();
8+
let first_few = [2u64,3,5,7,11,13,17,19,23];
9+
for (m, &n) in pset.iter().zip(first_few.iter()) {
10+
assert_eq!(m, n);
11+
}
12+
}
13+
14+
#[test]
15+
fn test_find(){
16+
let mut pset = PrimeSet::new();
17+
18+
// pset is empty, so it needs to generate the primes
19+
assert_eq!(pset.find_vec(1000), None);
20+
21+
let (ix_exp, n_exp) = (168, 1009);
22+
23+
assert_eq!(pset.find(1000), (ix_exp, n_exp));
24+
assert_eq!(pset.find(n_exp), (ix_exp, n_exp));
25+
26+
// We shouldn't have gone beyond 1009
27+
{
28+
let plst = pset.list();
29+
let plen = plst.len();
30+
assert_eq!(plen, ix_exp+1);
31+
32+
assert_eq!(plst[plen-1], n_exp);
33+
}
34+
35+
assert_eq!(pset.find_vec(n_exp), Some((ix_exp, n_exp)));
36+
}
37+
38+
#[test]
39+
fn test_primes(){
40+
let mut pset = PrimeSet::new();
41+
42+
// note: some are repeated, because the pset list grows as it goes
43+
44+
assert!(!pset.is_prime(1));
45+
assert!(!is_prime(1));
46+
assert!(pset.is_prime(2));
47+
assert!(is_prime(2));
48+
assert!(pset.is_prime(13));
49+
assert!(is_prime(13));
50+
assert!(!pset.is_prime(45));
51+
assert!(!is_prime(45));
52+
assert!(!pset.is_prime(13*13));
53+
assert!(!is_prime(13*13));
54+
assert!(pset.is_prime(13));
55+
assert!(pset.is_prime(7));
56+
assert!(is_prime(7));
57+
assert!(!pset.is_prime(9));
58+
assert!(!is_prime(9));
59+
assert!(pset.is_prime(5));
60+
assert!(is_prime(5));
61+
62+
assert!(pset.is_prime(954377));
63+
assert!(pset.is_prime(954379));
64+
assert!(!pset.is_prime(954377*954379));
65+
66+
assert!(!is_prime(18409199*18409201));
67+
assert!(pset.is_prime(18409199));
68+
assert!(pset.is_prime(18409201));
69+
70+
assert!(!pset.is_prime(2147483643));
71+
assert!(pset.is_prime(2147483647));
72+
assert!(!pset.is_prime(2147483649));
73+
assert!(!pset.is_prime(63061493));
74+
assert!(!pset.is_prime(63061491));
75+
assert!(pset.is_prime(63061489));
76+
assert!(!pset.is_prime(63061487));
77+
assert!(!pset.is_prime(63061485));
78+
assert!(pset.is_prime(2147483647));
79+
assert!(pset.is_prime(63061489));
80+
assert!(!is_prime(63061489 * 2147483647));
81+
assert!(!is_prime(63061489 * 63061489));
82+
// assert!(!is_prime(2147483647 * 2147483647)); // Runs very long
83+
}
84+
85+
#[test]
86+
fn test_factors(){
87+
let mut pset = PrimeSet::new();
88+
89+
let ns = [ (1, vec!()),
90+
(2, vec!(2)),
91+
(3, vec!(3)),
92+
(4, vec!(2,2)),
93+
(5, vec!(5)),
94+
(6, vec!(2,3)),
95+
(9, vec!(3,3)),
96+
(12, vec!(2,2,3)),
97+
(121, vec!(11,11)),
98+
(144, vec!(2,2,2,2,3,3)),
99+
(10_000_000, vec!(2,2,2,2,2,2,2,5,5,5,5,5,5,5)),
100+
(100, vec!(2,2,5,5)),
101+
(121, vec!(11, 11)),
102+
];
103+
104+
// Test unique factors
105+
for &(n, ref v) in ns.iter(){
106+
println!("{}: {:?}", n, v);
107+
assert_eq!(pset.prime_factors(n), *v);
108+
assert_eq!(factors(n), *v);
109+
110+
let unique_factors = factors_uniq(n);
111+
112+
// Get unique factors from the lists we made above
113+
let mut unique_factors_exp : Vec<u64> = v.iter().map(|&x| {x}).collect();
114+
unique_factors_exp.dedup();
115+
116+
assert_eq!(unique_factors, unique_factors_exp);
117+
}
118+
119+
pset = PrimeSet::new();
120+
assert_eq!(pset.prime_factors(12), vec!(2,2,3));
121+
122+
}

0 commit comments

Comments
 (0)