Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!us.feeder.erje.net!feeder.erje.net!eu.feeder.erje.net!eternal-september.org!feeder.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Eric Sosman Newsgroups: comp.lang.java.programmer Subject: Re: in1To10, a simple test plan Date: Sun, 10 Aug 2014 12:01:00 -0400 Organization: A noiseless patient Spider Lines: 60 Message-ID: References: <0c8de66a-429a-4697-b575-35f37a7b6882@googlegroups.com> <0rqdnVpuJ9ayDnrOnZ2dnUVZ8sKdnZ2d@bt.com> Mime-Version: 1.0 Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Injection-Date: Sun, 10 Aug 2014 16:01:00 +0000 (UTC) Injection-Info: mx05.eternal-september.org; posting-host="bd4e1cba8d8592bec5d5ed9e4537fbfd"; logging-data="15179"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/rIorKDTGTmt6vqLN6KYV0" User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.0 In-Reply-To: <0rqdnVpuJ9ayDnrOnZ2dnUVZ8sKdnZ2d@bt.com> Cancel-Lock: sha1:7ahLLc1hqwwEzMn0gVB6jywL/sk= Xref: csiph.com comp.lang.java.programmer:29631 On 8/10/2014 11:43 AM, lipska the kat wrote: > [...] > public class In1To10 { > > static boolean in1To10(int n, boolean outsideMode){ > if(n == 1 || n == 10){ > return true; > } > else{ > return (n > 1 && n < 10) ^ outsideMode; > } > } > > public static void main(String[] args){ > boolean outsideMode = true; > //Expected: Actual: > System.out.println(in1To10(1, outsideMode)); //true true > System.out.println(in1To10(1, !outsideMode)); //true true > System.out.println(in1To10(10, outsideMode)); //true true > System.out.println(in1To10(10, !outsideMode)); //true true > System.out.println(in1To10(0, outsideMode)); //true true > System.out.println(in1To10(0, !outsideMode)); //false false > System.out .println(in1To10(-1, outsideMode)); //true true > System.out.println(in1To10(-1, !outsideMode)); //false false > System.out.println(in1To10(2, outsideMode)); //false false > System.out.println(in1To10(2, !outsideMode)); //true true > System.out.println(in1To10(5, outsideMode)); //false false > System.out.println(in1To10(5, !outsideMode)); //true true > System.out.println(in1To10(9, outsideMode)); //false false > System.out.println(in1To10(9, !outsideMode)); //true true > System.out.println(in1To10(11, outsideMode)); //true true > System.out.println(in1To10(11, !outsideMode)); //false false > //etc > } > } While the notion of having a test plan is an excellent one, relying on human eyeballs to verify the expected output is tedious and may be error-prone. I'd suggest writing a helper method, something like static void test(int number, boolean mode, boolean expected) { boolean actual = in1To10(number, mode); if (actual != expected) { throw new AssertionError(String.format( "in1To10(%d, %b) gave %b, expected %b", number, mode, actual, expected); } } ... and then write the test cases as test(1, true, true); test(1, false, true); ... test(11, true, true); test(11, false, false); //etc -- esosman@comcast-dot-net.invalid