summaryrefslogtreecommitdiff
blob: 16e52741c23c83fd4974acb10ad00d276ac79405 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#!/bin/bash
# Copyright 2020-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8
source tests-common.sh || exit

inherit qmail

# some numbers are blocked because they are to small even if prime
test_low_numbers() {
	tbegin "low numbers"

	for i in $(seq 0 6); do
		if is_prime ${i}; then
			tend 1 "${i} badly accepted"
			return
		fi
	done

	tend 0
}

# test a given number for being prime
check_prime_number() {
	# use factor from coreutils to count the factors
	if [[ $(factor $1 | cut -d: -f2 | wc -w) == 1 ]]; then
		return $(is_prime $1)
	else
		return $(is_prime $1 && false || true)
	fi
}

test_primes() {
	tbegin "factorizations from ${1} to ${2}"

	for i in $(seq ${1:?} ${2:?}); do
		if ! check_prime_number $i; then
			tend 1 "${i} returned bad factorization"
			return 1
		fi
	done

	tend 0
}

test_low_numbers
test_primes 7 99
for i in $(seq 100 100 1000); do
	test_primes $i $((i + 99))
done

texit