1536663200dc497eb27df655d205bfa32f057340bTim Baverstock#!/bin/bash 2536663200dc497eb27df655d205bfa32f057340bTim Baverstock# 3536663200dc497eb27df655d205bfa32f057340bTim Baverstock# Copyright 2009 Google Inc. All Rights Reserved. 4536663200dc497eb27df655d205bfa32f057340bTim Baverstock# Author: weasel@google.com (Tim Baverstock) 5536663200dc497eb27df655d205bfa32f057340bTim Baverstock# 6536663200dc497eb27df655d205bfa32f057340bTim Baverstock# This program and the accompanying materials are made available under 7536663200dc497eb27df655d205bfa32f057340bTim Baverstock# the terms of the Common Public License v1.0 which accompanies this 8536663200dc497eb27df655d205bfa32f057340bTim Baverstock# distribution, and is available at http://www.eclipse.org/legal/cpl-v10.html 9536663200dc497eb27df655d205bfa32f057340bTim Baverstock# 10536663200dc497eb27df655d205bfa32f057340bTim Baverstock# This script tests the emma jar from the sources in this directory. 11536663200dc497eb27df655d205bfa32f057340bTim Baverstock# This script has to be run from its current directory ONLY. 12536663200dc497eb27df655d205bfa32f057340bTim Baverstock# Sample usages: 13536663200dc497eb27df655d205bfa32f057340bTim Baverstock# To just test emma.jar: 14536663200dc497eb27df655d205bfa32f057340bTim Baverstock# ./test.sh 15536663200dc497eb27df655d205bfa32f057340bTim Baverstock 16536663200dc497eb27df655d205bfa32f057340bTim BaverstockTESTDIR=/tmp/test-emma/$$ 17536663200dc497eb27df655d205bfa32f057340bTim BaverstockJAVADIR=$TESTDIR/android3/java 18536663200dc497eb27df655d205bfa32f057340bTim BaverstockSOURCEDIR=$JAVADIR/com/android/bunnies 19536663200dc497eb27df655d205bfa32f057340bTim Baverstockmkdir -p $SOURCEDIR 20536663200dc497eb27df655d205bfa32f057340bTim Baverstock 21536663200dc497eb27df655d205bfa32f057340bTim Baverstockcat <<END >$SOURCEDIR/Bunny.java 22536663200dc497eb27df655d205bfa32f057340bTim Baverstockpackage com.android.bunnies; 23536663200dc497eb27df655d205bfa32f057340bTim Baverstock 24536663200dc497eb27df655d205bfa32f057340bTim Baverstockimport java.util.Random; 25536663200dc497eb27df655d205bfa32f057340bTim Baverstock 26536663200dc497eb27df655d205bfa32f057340bTim Baverstockpublic class Bunny { 27536663200dc497eb27df655d205bfa32f057340bTim Baverstock int randomNumber1 = (new Random()).nextInt(); 28536663200dc497eb27df655d205bfa32f057340bTim Baverstock 29536663200dc497eb27df655d205bfa32f057340bTim Baverstock int randomNumber2; 30536663200dc497eb27df655d205bfa32f057340bTim Baverstock 31536663200dc497eb27df655d205bfa32f057340bTim Baverstock { 32536663200dc497eb27df655d205bfa32f057340bTim Baverstock Random r = new Random(); 33536663200dc497eb27df655d205bfa32f057340bTim Baverstock randomNumber2 = r.nextInt(); 34536663200dc497eb27df655d205bfa32f057340bTim Baverstock } 35536663200dc497eb27df655d205bfa32f057340bTim Baverstock 36536663200dc497eb27df655d205bfa32f057340bTim Baverstock int addOne(int a) { 37536663200dc497eb27df655d205bfa32f057340bTim Baverstock int b = a + 1; 38536663200dc497eb27df655d205bfa32f057340bTim Baverstock return identity(a + 1) 39536663200dc497eb27df655d205bfa32f057340bTim Baverstock ? 1 40536663200dc497eb27df655d205bfa32f057340bTim Baverstock : 0; 41536663200dc497eb27df655d205bfa32f057340bTim Baverstock } 42536663200dc497eb27df655d205bfa32f057340bTim Baverstock 43536663200dc497eb27df655d205bfa32f057340bTim Baverstock int dontAddOne(int a) { 44536663200dc497eb27df655d205bfa32f057340bTim Baverstock return a; 45536663200dc497eb27df655d205bfa32f057340bTim Baverstock } 46536663200dc497eb27df655d205bfa32f057340bTim Baverstock 47536663200dc497eb27df655d205bfa32f057340bTim Baverstock boolean identity(int a) { 48536663200dc497eb27df655d205bfa32f057340bTim Baverstock return a != a; 49536663200dc497eb27df655d205bfa32f057340bTim Baverstock } 50536663200dc497eb27df655d205bfa32f057340bTim Baverstock 51536663200dc497eb27df655d205bfa32f057340bTim Baverstock public static void main(String[] args) { 52536663200dc497eb27df655d205bfa32f057340bTim Baverstock Bunny thisThing = new Bunny(); 53536663200dc497eb27df655d205bfa32f057340bTim Baverstock SubBunny thatThing = new SubBunny(); 54536663200dc497eb27df655d205bfa32f057340bTim Baverstock System.out.println(thisThing.addOne(2)); 55536663200dc497eb27df655d205bfa32f057340bTim Baverstock System.out.println(thatThing.addOne(2)); 56536663200dc497eb27df655d205bfa32f057340bTim Baverstock } 57536663200dc497eb27df655d205bfa32f057340bTim Baverstock} 58536663200dc497eb27df655d205bfa32f057340bTim BaverstockEND 59536663200dc497eb27df655d205bfa32f057340bTim Baverstockcat <<END >$SOURCEDIR/SubBunny.java 60536663200dc497eb27df655d205bfa32f057340bTim Baverstockpackage com.android.bunnies; 61536663200dc497eb27df655d205bfa32f057340bTim Baverstockimport com.android.bunnies.Bunny; 62536663200dc497eb27df655d205bfa32f057340bTim Baverstockclass SubBunny extends Bunny { 63536663200dc497eb27df655d205bfa32f057340bTim Baverstock int addOne(int a) { 64536663200dc497eb27df655d205bfa32f057340bTim Baverstock int b = a + 2; 65536663200dc497eb27df655d205bfa32f057340bTim Baverstock return identity(a) && identity(b) || identity(b) 66536663200dc497eb27df655d205bfa32f057340bTim Baverstock ? 1 67536663200dc497eb27df655d205bfa32f057340bTim Baverstock : 0; 68536663200dc497eb27df655d205bfa32f057340bTim Baverstock } 69536663200dc497eb27df655d205bfa32f057340bTim Baverstock 70536663200dc497eb27df655d205bfa32f057340bTim Baverstock boolean identity(int a) { 71536663200dc497eb27df655d205bfa32f057340bTim Baverstock return a == a; 72536663200dc497eb27df655d205bfa32f057340bTim Baverstock } 73536663200dc497eb27df655d205bfa32f057340bTim Baverstock} 74536663200dc497eb27df655d205bfa32f057340bTim BaverstockEND 75536663200dc497eb27df655d205bfa32f057340bTim Baverstock 76536663200dc497eb27df655d205bfa32f057340bTim BaverstockGOLDEN=$TESTDIR/golden.lcov 77536663200dc497eb27df655d205bfa32f057340bTim Baverstockcat <<END >$GOLDEN 78536663200dc497eb27df655d205bfa32f057340bTim BaverstockSF:com/android/bunnies/SubBunny.java 79536663200dc497eb27df655d205bfa32f057340bTim BaverstockFN:5,SubBunny::addOne (int): int 80536663200dc497eb27df655d205bfa32f057340bTim BaverstockFNDA:1,SubBunny::addOne (int): int 81536663200dc497eb27df655d205bfa32f057340bTim BaverstockFN:12,SubBunny::identity (int): boolean 82536663200dc497eb27df655d205bfa32f057340bTim BaverstockFNDA:1,SubBunny::identity (int): boolean 83536663200dc497eb27df655d205bfa32f057340bTim BaverstockFN:3,SubBunny::SubBunny (): void 84536663200dc497eb27df655d205bfa32f057340bTim BaverstockFNDA:1,SubBunny::SubBunny (): void 85536663200dc497eb27df655d205bfa32f057340bTim BaverstockDA:3,1 86536663200dc497eb27df655d205bfa32f057340bTim BaverstockDA:5,1 87536663200dc497eb27df655d205bfa32f057340bTim BaverstockDA:6,1 88536663200dc497eb27df655d205bfa32f057340bTim BaverstockDA:12,1 89536663200dc497eb27df655d205bfa32f057340bTim Baverstockend_of_record 90536663200dc497eb27df655d205bfa32f057340bTim BaverstockSF:com/android/bunnies/Bunny.java 91536663200dc497eb27df655d205bfa32f057340bTim BaverstockFN:23,Bunny::dontAddOne (int): int 92536663200dc497eb27df655d205bfa32f057340bTim BaverstockFNDA:0,Bunny::dontAddOne (int): int 93536663200dc497eb27df655d205bfa32f057340bTim BaverstockFN:27,Bunny::identity (int): boolean 94536663200dc497eb27df655d205bfa32f057340bTim BaverstockFNDA:1,Bunny::identity (int): boolean 95536663200dc497eb27df655d205bfa32f057340bTim BaverstockFN:16,Bunny::addOne (int): int 96536663200dc497eb27df655d205bfa32f057340bTim BaverstockFNDA:1,Bunny::addOne (int): int 97536663200dc497eb27df655d205bfa32f057340bTim BaverstockFN:5,Bunny::Bunny (): void 98536663200dc497eb27df655d205bfa32f057340bTim BaverstockFNDA:1,Bunny::Bunny (): void 99536663200dc497eb27df655d205bfa32f057340bTim BaverstockFN:31,Bunny::main (String []): void 100536663200dc497eb27df655d205bfa32f057340bTim BaverstockFNDA:1,Bunny::main (String []): void 101536663200dc497eb27df655d205bfa32f057340bTim BaverstockDA:5,1 102536663200dc497eb27df655d205bfa32f057340bTim BaverstockDA:6,1 103536663200dc497eb27df655d205bfa32f057340bTim BaverstockDA:11,1 104536663200dc497eb27df655d205bfa32f057340bTim BaverstockDA:12,1 105536663200dc497eb27df655d205bfa32f057340bTim BaverstockDA:13,1 106536663200dc497eb27df655d205bfa32f057340bTim BaverstockDA:16,1 107536663200dc497eb27df655d205bfa32f057340bTim BaverstockDA:17,1 108536663200dc497eb27df655d205bfa32f057340bTim BaverstockDA:23,0 109536663200dc497eb27df655d205bfa32f057340bTim BaverstockDA:27,1 110536663200dc497eb27df655d205bfa32f057340bTim BaverstockDA:31,1 111536663200dc497eb27df655d205bfa32f057340bTim BaverstockDA:32,1 112536663200dc497eb27df655d205bfa32f057340bTim BaverstockDA:33,1 113536663200dc497eb27df655d205bfa32f057340bTim BaverstockDA:34,1 114536663200dc497eb27df655d205bfa32f057340bTim BaverstockDA:35,1 115536663200dc497eb27df655d205bfa32f057340bTim Baverstockend_of_record 116536663200dc497eb27df655d205bfa32f057340bTim BaverstockEND 117536663200dc497eb27df655d205bfa32f057340bTim Baverstock 118536663200dc497eb27df655d205bfa32f057340bTim Baverstockjavac -g $(find $SOURCEDIR -name \*.java) 119536663200dc497eb27df655d205bfa32f057340bTim Baverstock 120536663200dc497eb27df655d205bfa32f057340bTim BaverstockCOVERAGE=$TESTDIR/coverage.dat 121536663200dc497eb27df655d205bfa32f057340bTim Baverstockjava -cp dist/emma.jar emmarun -r lcov -cp $JAVADIR \ 122536663200dc497eb27df655d205bfa32f057340bTim Baverstock -sp $JAVADIR -Dreport.lcov.out.file=$COVERAGE com.android.bunnies.Bunny 123536663200dc497eb27df655d205bfa32f057340bTim Baverstock 124536663200dc497eb27df655d205bfa32f057340bTim Baverstock# Don't really need to test these separately, but it's useful to me for now. 125536663200dc497eb27df655d205bfa32f057340bTim Baverstock 126536663200dc497eb27df655d205bfa32f057340bTim Baverstockif ! diff <(sort $GOLDEN) <(sort $COVERAGE) >$TESTDIR/diff-sorted; then 127536663200dc497eb27df655d205bfa32f057340bTim Baverstock echo Tests failed: Additional or missing lines: See $TESTDIR/diff-sorted 128536663200dc497eb27df655d205bfa32f057340bTim Baverstock exit 129536663200dc497eb27df655d205bfa32f057340bTim Baverstockfi 130536663200dc497eb27df655d205bfa32f057340bTim Baverstockif ! diff $GOLDEN $COVERAGE >$TESTDIR/diff-ordered; then 131536663200dc497eb27df655d205bfa32f057340bTim Baverstock echo Tests failed: same lines, different order: See $TESTDIR/diff-ordered 132536663200dc497eb27df655d205bfa32f057340bTim Baverstock exit 133536663200dc497eb27df655d205bfa32f057340bTim Baverstockfi 134536663200dc497eb27df655d205bfa32f057340bTim Baverstockrm -rf $TESTDIR 135536663200dc497eb27df655d205bfa32f057340bTim Baverstockecho Tests passed. 136536663200dc497eb27df655d205bfa32f057340bTim Baverstock 137