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