1*6d7f9877STreehugger Robot#!/bin/bash 2*6d7f9877STreehugger Robot# 3*6d7f9877STreehugger Robot# Copyright 2009 Google Inc. All Rights Reserved. 4*6d7f9877STreehugger Robot# Author: [email protected] (Tim Baverstock) 5*6d7f9877STreehugger Robot# 6*6d7f9877STreehugger Robot# This program and the accompanying materials are made available under 7*6d7f9877STreehugger Robot# the terms of the Common Public License v1.0 which accompanies this 8*6d7f9877STreehugger Robot# distribution, and is available at http://www.eclipse.org/legal/cpl-v10.html 9*6d7f9877STreehugger Robot# 10*6d7f9877STreehugger Robot# This script tests the emma jar from the sources in this directory. 11*6d7f9877STreehugger Robot# This script has to be run from its current directory ONLY. 12*6d7f9877STreehugger Robot# Sample usages: 13*6d7f9877STreehugger Robot# To just test emma.jar: 14*6d7f9877STreehugger Robot# ./test.sh 15*6d7f9877STreehugger Robot 16*6d7f9877STreehugger RobotTESTDIR=/tmp/test-emma/$$ 17*6d7f9877STreehugger RobotJAVADIR=$TESTDIR/android3/java 18*6d7f9877STreehugger RobotSOURCEDIR=$JAVADIR/com/android/bunnies 19*6d7f9877STreehugger Robotmkdir -p $SOURCEDIR 20*6d7f9877STreehugger Robot 21*6d7f9877STreehugger Robotcat <<END >$SOURCEDIR/Bunny.java 22*6d7f9877STreehugger Robotpackage com.android.bunnies; 23*6d7f9877STreehugger Robot 24*6d7f9877STreehugger Robotimport java.util.Random; 25*6d7f9877STreehugger Robot 26*6d7f9877STreehugger Robotpublic class Bunny { 27*6d7f9877STreehugger Robot int randomNumber1 = (new Random()).nextInt(); 28*6d7f9877STreehugger Robot 29*6d7f9877STreehugger Robot int randomNumber2; 30*6d7f9877STreehugger Robot 31*6d7f9877STreehugger Robot { 32*6d7f9877STreehugger Robot Random r = new Random(); 33*6d7f9877STreehugger Robot randomNumber2 = r.nextInt(); 34*6d7f9877STreehugger Robot } 35*6d7f9877STreehugger Robot 36*6d7f9877STreehugger Robot int addOne(int a) { 37*6d7f9877STreehugger Robot int b = a + 1; 38*6d7f9877STreehugger Robot return identity(a + 1) 39*6d7f9877STreehugger Robot ? 1 40*6d7f9877STreehugger Robot : 0; 41*6d7f9877STreehugger Robot } 42*6d7f9877STreehugger Robot 43*6d7f9877STreehugger Robot int dontAddOne(int a) { 44*6d7f9877STreehugger Robot return a; 45*6d7f9877STreehugger Robot } 46*6d7f9877STreehugger Robot 47*6d7f9877STreehugger Robot boolean identity(int a) { 48*6d7f9877STreehugger Robot return a != a; 49*6d7f9877STreehugger Robot } 50*6d7f9877STreehugger Robot 51*6d7f9877STreehugger Robot public static void main(String[] args) { 52*6d7f9877STreehugger Robot Bunny thisThing = new Bunny(); 53*6d7f9877STreehugger Robot SubBunny thatThing = new SubBunny(); 54*6d7f9877STreehugger Robot System.out.println(thisThing.addOne(2)); 55*6d7f9877STreehugger Robot System.out.println(thatThing.addOne(2)); 56*6d7f9877STreehugger Robot } 57*6d7f9877STreehugger Robot} 58*6d7f9877STreehugger RobotEND 59*6d7f9877STreehugger Robotcat <<END >$SOURCEDIR/SubBunny.java 60*6d7f9877STreehugger Robotpackage com.android.bunnies; 61*6d7f9877STreehugger Robotimport com.android.bunnies.Bunny; 62*6d7f9877STreehugger Robotclass SubBunny extends Bunny { 63*6d7f9877STreehugger Robot int addOne(int a) { 64*6d7f9877STreehugger Robot int b = a + 2; 65*6d7f9877STreehugger Robot return identity(a) && identity(b) || identity(b) 66*6d7f9877STreehugger Robot ? 1 67*6d7f9877STreehugger Robot : 0; 68*6d7f9877STreehugger Robot } 69*6d7f9877STreehugger Robot 70*6d7f9877STreehugger Robot boolean identity(int a) { 71*6d7f9877STreehugger Robot return a == a; 72*6d7f9877STreehugger Robot } 73*6d7f9877STreehugger Robot} 74*6d7f9877STreehugger RobotEND 75*6d7f9877STreehugger Robot 76*6d7f9877STreehugger RobotGOLDEN=$TESTDIR/golden.lcov 77*6d7f9877STreehugger Robotcat <<END >$GOLDEN 78*6d7f9877STreehugger RobotSF:com/android/bunnies/SubBunny.java 79*6d7f9877STreehugger RobotFN:5,SubBunny::addOne (int): int 80*6d7f9877STreehugger RobotFNDA:1,SubBunny::addOne (int): int 81*6d7f9877STreehugger RobotFN:12,SubBunny::identity (int): boolean 82*6d7f9877STreehugger RobotFNDA:1,SubBunny::identity (int): boolean 83*6d7f9877STreehugger RobotFN:3,SubBunny::SubBunny (): void 84*6d7f9877STreehugger RobotFNDA:1,SubBunny::SubBunny (): void 85*6d7f9877STreehugger RobotDA:3,1 86*6d7f9877STreehugger RobotDA:5,1 87*6d7f9877STreehugger RobotDA:6,1 88*6d7f9877STreehugger RobotDA:12,1 89*6d7f9877STreehugger Robotend_of_record 90*6d7f9877STreehugger RobotSF:com/android/bunnies/Bunny.java 91*6d7f9877STreehugger RobotFN:23,Bunny::dontAddOne (int): int 92*6d7f9877STreehugger RobotFNDA:0,Bunny::dontAddOne (int): int 93*6d7f9877STreehugger RobotFN:27,Bunny::identity (int): boolean 94*6d7f9877STreehugger RobotFNDA:1,Bunny::identity (int): boolean 95*6d7f9877STreehugger RobotFN:16,Bunny::addOne (int): int 96*6d7f9877STreehugger RobotFNDA:1,Bunny::addOne (int): int 97*6d7f9877STreehugger RobotFN:5,Bunny::Bunny (): void 98*6d7f9877STreehugger RobotFNDA:1,Bunny::Bunny (): void 99*6d7f9877STreehugger RobotFN:31,Bunny::main (String []): void 100*6d7f9877STreehugger RobotFNDA:1,Bunny::main (String []): void 101*6d7f9877STreehugger RobotDA:5,1 102*6d7f9877STreehugger RobotDA:6,1 103*6d7f9877STreehugger RobotDA:11,1 104*6d7f9877STreehugger RobotDA:12,1 105*6d7f9877STreehugger RobotDA:13,1 106*6d7f9877STreehugger RobotDA:16,1 107*6d7f9877STreehugger RobotDA:17,1 108*6d7f9877STreehugger RobotDA:23,0 109*6d7f9877STreehugger RobotDA:27,1 110*6d7f9877STreehugger RobotDA:31,1 111*6d7f9877STreehugger RobotDA:32,1 112*6d7f9877STreehugger RobotDA:33,1 113*6d7f9877STreehugger RobotDA:34,1 114*6d7f9877STreehugger RobotDA:35,1 115*6d7f9877STreehugger Robotend_of_record 116*6d7f9877STreehugger RobotEND 117*6d7f9877STreehugger Robot 118*6d7f9877STreehugger Robotjavac -g $(find $SOURCEDIR -name \*.java) 119*6d7f9877STreehugger Robot 120*6d7f9877STreehugger RobotCOVERAGE=$TESTDIR/coverage.dat 121*6d7f9877STreehugger Robotjava -cp dist/emma.jar emmarun -r lcov -cp $JAVADIR \ 122*6d7f9877STreehugger Robot -sp $JAVADIR -Dreport.lcov.out.file=$COVERAGE com.android.bunnies.Bunny 123*6d7f9877STreehugger Robot 124*6d7f9877STreehugger Robot# Don't really need to test these separately, but it's useful to me for now. 125*6d7f9877STreehugger Robot 126*6d7f9877STreehugger Robotif ! diff <(sort $GOLDEN) <(sort $COVERAGE) >$TESTDIR/diff-sorted; then 127*6d7f9877STreehugger Robot echo Tests failed: Additional or missing lines: See $TESTDIR/diff-sorted 128*6d7f9877STreehugger Robot exit 129*6d7f9877STreehugger Robotfi 130*6d7f9877STreehugger Robotif ! diff $GOLDEN $COVERAGE >$TESTDIR/diff-ordered; then 131*6d7f9877STreehugger Robot echo Tests failed: same lines, different order: See $TESTDIR/diff-ordered 132*6d7f9877STreehugger Robot exit 133*6d7f9877STreehugger Robotfi 134*6d7f9877STreehugger Robotrm -rf $TESTDIR 135*6d7f9877STreehugger Robotecho Tests passed. 136*6d7f9877STreehugger Robot 137