xref: /aosp_15_r20/external/emma/test.sh (revision 6d7f987710eebdcc6b7b0180f50eb65086f06dd7)
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