Home | History | Annotate | Line # | Download | only in games
t_factor.sh revision 1.12
      1 # $NetBSD: t_factor.sh,v 1.12 2024/04/28 07:27:41 rillig Exp $
      2 #
      3 # Copyright (c) 2007, 2008, 2009 The NetBSD Foundation, Inc.
      4 # All rights reserved.
      5 #
      6 # Redistribution and use in source and binary forms, with or without
      7 # modification, are permitted provided that the following conditions
      8 # are met:
      9 # 1. Redistributions of source code must retain the above copyright
     10 #    notice, this list of conditions and the following disclaimer.
     11 # 2. Redistributions in binary form must reproduce the above copyright
     12 #    notice, this list of conditions and the following disclaimer in the
     13 #    documentation and/or other materials provided with the distribution.
     14 #
     15 # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
     16 # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
     17 # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     18 # PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
     19 # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     20 # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     21 # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     22 # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     23 # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     24 # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     25 # POSSIBILITY OF SUCH DAMAGE.
     26 #
     27 
     28 expect() {
     29 	echo "${2}" >expout
     30 	ncrypt=$( ldd /usr/games/factor | grep -c -- -lcrypt )
     31 	if [ -n "$3" ] && [ $ncrypt -eq 0 ] ; then 
     32 		atf_skip "crypto needed for huge non-prime factors - PR bin/23663"
     33 	fi
     34 	atf_check -s exit:0 -o file:expout -e empty /usr/games/factor ${1}
     35 }
     36 
     37 atf_test_case overflow1
     38 overflow1_head() {
     39 	atf_set "descr" "Tests for overflow conditions"
     40 	atf_set "require.progs" "/usr/games/factor"
     41 }
     42 overflow1_body() {
     43 	expect '8675309' '8675309: 8675309'
     44 }
     45 
     46 atf_test_case overflow2
     47 overflow2_head() {
     48 	atf_set "descr" "Tests for overflow conditions"
     49 	atf_set "require.progs" "/usr/games/factor"
     50 }
     51 overflow2_body() {
     52 	expect '6172538568' '6172538568: 2 2 2 3 7 17 2161253'
     53 }
     54 
     55 atf_test_case loop1
     56 loop1_head() {
     57 	atf_set "descr" "Tests some cases that once locked the program" \
     58 	                "in an infinite loop"
     59 	atf_set "require.progs" "/usr/games/factor"
     60 }
     61 loop1_body() {
     62 	expect '2147483647111311' '2147483647111311: 3 3 3 131 607148331103'
     63 }
     64 
     65 atf_test_case loop2
     66 loop2_head() {
     67 	atf_set "descr" "Tests some cases that once locked the program" \
     68 	                "in an infinite loop"
     69 	atf_set "require.progs" "/usr/games/factor"
     70 }
     71 loop2_body() {
     72 	expect '99999999999991' '99999999999991: 7 13 769231 1428571' Need_Crypto
     73 }
     74 
     75 
     76 atf_test_case h_overflow1
     77 h_overflow1_head() {
     78 	atf_set "descr" "Tests for h_overflow conditions"
     79 	atf_set "require.progs" "/usr/games/factor"
     80 }
     81 h_overflow1_body() {
     82 	expect '-h 8675309' '8675309: 8675309'
     83 }
     84 
     85 atf_test_case h_overflow2
     86 h_overflow2_head() {
     87 	atf_set "descr" "Tests for h_overflow conditions"
     88 	atf_set "require.progs" "/usr/games/factor"
     89 }
     90 h_overflow2_body() {
     91 	expect '-h 6172538568' '6172538568: 2^3 3 7 17 2161253'
     92 }
     93 
     94 atf_test_case h_loop1
     95 h_loop1_head() {
     96 	atf_set "descr" "Tests some cases that once locked the program" \
     97 	                "in an infinite h_loop"
     98 	atf_set "require.progs" "/usr/games/factor"
     99 }
    100 h_loop1_body() {
    101 	expect '-h 2147483647111311' '2147483647111311: 3^3 131 607148331103'
    102 }
    103 
    104 atf_test_case h_loop2
    105 h_loop2_head() {
    106 	atf_set "descr" "Tests some cases that once locked the program" \
    107 	                "in an infinite h_loop"
    108 	atf_set "require.progs" "/usr/games/factor"
    109 }
    110 h_loop2_body() {
    111 	expect '-h 99999999999991' '99999999999991: 7 13 769231 1428571' Need_Crypto
    112 }
    113 
    114 
    115 atf_test_case hx_overflow1
    116 hx_overflow1_head() {
    117 	atf_set "descr" "Tests for hx_overflow conditions"
    118 	atf_set "require.progs" "/usr/games/factor"
    119 }
    120 hx_overflow1_body() {
    121 	expect '-hx 8675309' '0x845FED: 0x845FED'
    122 }
    123 
    124 atf_test_case hx_overflow2
    125 hx_overflow2_head() {
    126 	atf_set "descr" "Tests for hx_overflow conditions"
    127 	atf_set "require.progs" "/usr/games/factor"
    128 }
    129 hx_overflow2_body() {
    130 	expect '-hx 6172538568' '0x16FE976C8: 0x2^3 0x3 0x7 0x11 0x20FA65'
    131 }
    132 
    133 atf_test_case hx_loop1
    134 hx_loop1_head() {
    135 	atf_set "descr" "Tests some cases that once locked the program" \
    136 	                "in an infinite hx_loop"
    137 	atf_set "require.progs" "/usr/games/factor"
    138 }
    139 hx_loop1_body() {
    140 	expect '-hx 2147483647111311' '0x7A11FFFF2708F: 0x3^3 0x83 0x8D5CDC505F'
    141 }
    142 
    143 atf_test_case hx_loop2
    144 hx_loop2_head() {
    145 	atf_set "descr" "Tests some cases that once locked the program" \
    146 	                "in an infinite hx_loop"
    147 	atf_set "require.progs" "/usr/games/factor"
    148 }
    149 hx_loop2_body() {
    150 	expect '-hx 99999999999991' '0x5AF3107A3FF7: 0x7 0xd 0xBBCCF 0x15CC5B' Need_Crypto
    151 }
    152 
    153 atf_init_test_cases()
    154 {
    155 	atf_add_test_case overflow1
    156 	atf_add_test_case overflow2
    157 	atf_add_test_case loop1
    158 	atf_add_test_case loop2
    159 
    160 	atf_add_test_case h_overflow1
    161 	atf_add_test_case h_overflow2
    162 	atf_add_test_case h_loop1
    163 	atf_add_test_case h_loop2
    164 
    165 	atf_add_test_case hx_overflow1
    166 	atf_add_test_case hx_overflow2
    167 	atf_add_test_case hx_loop1
    168 	atf_add_test_case hx_loop2
    169 }
    170