You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
136 lines
3.0 KiB
136 lines
3.0 KiB
#!/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. |
|
|
|
|