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