137 lines
3.0 KiB
Bash
Executable File
137 lines
3.0 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# Copyright 2009 Google Inc. All Rights Reserved.
|
|
# Author: weasel@google.com (Tim Baverstock)
|
|
#
|
|
# This program and the accompanying materials are made available under
|
|
# the terms of the Common Public License v1.0 which accompanies this
|
|
# distribution, and is available at http://www.eclipse.org/legal/cpl-v10.html
|
|
#
|
|
# This script tests the emma jar from the sources in this directory.
|
|
# This script has to be run from its current directory ONLY.
|
|
# Sample usages:
|
|
# To just test emma.jar:
|
|
# ./test.sh
|
|
|
|
TESTDIR=/tmp/test-emma/$$
|
|
JAVADIR=$TESTDIR/android3/java
|
|
SOURCEDIR=$JAVADIR/com/android/bunnies
|
|
mkdir -p $SOURCEDIR
|
|
|
|
cat <<END >$SOURCEDIR/Bunny.java
|
|
package com.android.bunnies;
|
|
|
|
import java.util.Random;
|
|
|
|
public class Bunny {
|
|
int randomNumber1 = (new Random()).nextInt();
|
|
|
|
int randomNumber2;
|
|
|
|
{
|
|
Random r = new Random();
|
|
randomNumber2 = r.nextInt();
|
|
}
|
|
|
|
int addOne(int a) {
|
|
int b = a + 1;
|
|
return identity(a + 1)
|
|
? 1
|
|
: 0;
|
|
}
|
|
|
|
int dontAddOne(int a) {
|
|
return a;
|
|
}
|
|
|
|
boolean identity(int a) {
|
|
return a != a;
|
|
}
|
|
|
|
public static void main(String[] args) {
|
|
Bunny thisThing = new Bunny();
|
|
SubBunny thatThing = new SubBunny();
|
|
System.out.println(thisThing.addOne(2));
|
|
System.out.println(thatThing.addOne(2));
|
|
}
|
|
}
|
|
END
|
|
cat <<END >$SOURCEDIR/SubBunny.java
|
|
package com.android.bunnies;
|
|
import com.android.bunnies.Bunny;
|
|
class SubBunny extends Bunny {
|
|
int addOne(int a) {
|
|
int b = a + 2;
|
|
return identity(a) && identity(b) || identity(b)
|
|
? 1
|
|
: 0;
|
|
}
|
|
|
|
boolean identity(int a) {
|
|
return a == a;
|
|
}
|
|
}
|
|
END
|
|
|
|
GOLDEN=$TESTDIR/golden.lcov
|
|
cat <<END >$GOLDEN
|
|
SF:com/android/bunnies/SubBunny.java
|
|
FN:5,SubBunny::addOne (int): int
|
|
FNDA:1,SubBunny::addOne (int): int
|
|
FN:12,SubBunny::identity (int): boolean
|
|
FNDA:1,SubBunny::identity (int): boolean
|
|
FN:3,SubBunny::SubBunny (): void
|
|
FNDA:1,SubBunny::SubBunny (): void
|
|
DA:3,1
|
|
DA:5,1
|
|
DA:6,1
|
|
DA:12,1
|
|
end_of_record
|
|
SF:com/android/bunnies/Bunny.java
|
|
FN:23,Bunny::dontAddOne (int): int
|
|
FNDA:0,Bunny::dontAddOne (int): int
|
|
FN:27,Bunny::identity (int): boolean
|
|
FNDA:1,Bunny::identity (int): boolean
|
|
FN:16,Bunny::addOne (int): int
|
|
FNDA:1,Bunny::addOne (int): int
|
|
FN:5,Bunny::Bunny (): void
|
|
FNDA:1,Bunny::Bunny (): void
|
|
FN:31,Bunny::main (String []): void
|
|
FNDA:1,Bunny::main (String []): void
|
|
DA:5,1
|
|
DA:6,1
|
|
DA:11,1
|
|
DA:12,1
|
|
DA:13,1
|
|
DA:16,1
|
|
DA:17,1
|
|
DA:23,0
|
|
DA:27,1
|
|
DA:31,1
|
|
DA:32,1
|
|
DA:33,1
|
|
DA:34,1
|
|
DA:35,1
|
|
end_of_record
|
|
END
|
|
|
|
javac -g $(find $SOURCEDIR -name \*.java)
|
|
|
|
COVERAGE=$TESTDIR/coverage.dat
|
|
java -cp dist/emma.jar emmarun -r lcov -cp $JAVADIR \
|
|
-sp $JAVADIR -Dreport.lcov.out.file=$COVERAGE com.android.bunnies.Bunny
|
|
|
|
# Don't really need to test these separately, but it's useful to me for now.
|
|
|
|
if ! diff <(sort $GOLDEN) <(sort $COVERAGE) >$TESTDIR/diff-sorted; then
|
|
echo Tests failed: Additional or missing lines: See $TESTDIR/diff-sorted
|
|
exit
|
|
fi
|
|
if ! diff $GOLDEN $COVERAGE >$TESTDIR/diff-ordered; then
|
|
echo Tests failed: same lines, different order: See $TESTDIR/diff-ordered
|
|
exit
|
|
fi
|
|
rm -rf $TESTDIR
|
|
echo Tests passed.
|
|
|