Commit 41ef0014 authored by Kevin Bi's avatar Kevin Bi
Browse files

"Found way to use tarantula with the traingle src code instead of the...

"Found way to use tarantula with the traingle src code instead of the subsitute src code. Removed triangle/tarantula dir as no longer neccessary. Documented changes in the README.md"
parent b1884df5
Loading
Loading
Loading
Loading
+10 −10
Original line number Diff line number Diff line
@@ -7,10 +7,6 @@ Test Program: Triangle
----------------------
Triangle.java is a short java program, there is a fault in line 18 of the program.
TestSuite.java is a suite with 33 tests for triangle, running the tests should report 4 failed tests.
There is a tarantula dir within the Triangle program which contains the same code as the src dir 
but the files are under a different package name. For some reason the Tarantula implmentation was unable 
to access this classes in the src dir(and it's associated packages). Until this problem is fixed the 
temporary solution will be to have the seperate tarantula dir in triangle.

GZoltar
-------
@@ -29,9 +25,10 @@ The github projects for tacoco and primitive hamcrest can be found at https://gi
respectively although the repos are copied into this project for convenience

Main requires several arguments to be run:
	- (1) The cov-matrix in Json format
	- (2) The class file of the Test program
	1. The cov-matrix in Json format
	2. The class file of the Test program

Main can also be run in eclipse simply copy all the code tarantula dir into a new java project and use the Run Configurations option to allow for command line arguments, another option is to hard code the files and classes. The needed jars, (junit and json-simple) are found in the lib repo so  eclipse can easily add them. 

Getting started
---------------
@@ -76,13 +73,16 @@ the dir to be evaluated and the tacoco directory, see the script for more inform
	- ./run-jacoco /absolute/path/to/repo/triangle triangle /absolute/path/to/repo/tacoco

4. Compile the Tarantula classes and the test classes(triangle/tarantula classes).
	- (in root)
	- javac -cp /lib/\\\* tarantula/\*.java
	- javac -cp /lib/\\\* triangle/tarantula/\*.java

5. Run Tarantula's Main: Main requires two args(see the file for more details), the first is the absolute path to the cov-matrix.json file, the second is the name of the Test class, if the test program belongs to a package make sure to specify the package, ex: Triangle.TestSuite.  
	- java -cp .:lib/\\\* tarantula.Main /abs/path/to/triangle-mvn-compact-cov-matrix.json triangle.tarantula.TestSuite
5. Run Tarantula's Main: Main requires two args(see the file for more details), the first is the absolute path to the cov-matrix.json file, the second is the name of the Test class, if the test program belongs to a package make sure to specify the package, ex: Triangle.TestSuite. An important note is that the TestSuite.class file must be in the same location as the TestSuite.java file. Otherwise the Main will not find the class file and will throw a NoClassDefFoundError   	
	- copy the .class file to the same dir as the .java file
		- cd triangle/target/../test-classes/../java
		- cp TestSuite.class triangle/src/test/../java
 
	- Main can also be run in eclipse simply copy all the code tarantula dir into a new java project and use the Run Configurations option to allow for command line arguments, another option is to hard code the files and classes. The needed jars, (junit and json-simple) are found in the lib repo so  eclipse can easily add them. 
	- java -cp .:lib/\\\* tarantula.Main /abs/path/to/triangle-mvn-compact-cov-matrix.json triangle.src.test.java.TestSuite

6. Clean the tacoco dir: Run clean-tacoco in order to clean the dir so it can be reused, this means tacoco will have to be recompiled
	- ./clean-tacoco
+1 −1
Original line number Diff line number Diff line
package triangle;
package triangle.src.main.java;

public class Triangle {
	
+35 −35
Original line number Diff line number Diff line
package triangle.test;
package triangle.src.test.java;

import junit.framework.TestCase;
import static triangle.Triangle.Type.*;
import static triangle.src.main.java.Triangle.Type.*;

public class TestSuite extends TestCase {

   public void test1() {
        assertEquals (triangle.Triangle.classify(0,1301,1), INVALID);
        assertEquals (triangle.src.main.java.Triangle.classify(0,1301,1), INVALID);
   }
   public void test2() {
        assertEquals (triangle.Triangle.classify(1108,1,1), INVALID);
        assertEquals (triangle.src.main.java.Triangle.classify(1108,1,1), INVALID);
   }
   public void test3() {
        assertEquals (triangle.Triangle.classify(1,0,-665), INVALID);
        assertEquals (triangle.src.main.java.Triangle.classify(1,0,-665), INVALID);
   }
   public void test4() {
        assertEquals (triangle.Triangle.classify(1,1,0), INVALID);
        assertEquals (triangle.src.main.java.Triangle.classify(1,1,0), INVALID);
   }
   public void test5() {
        assertEquals (triangle.Triangle.classify(582,582,582), EQUILATERAL);
        assertEquals (triangle.src.main.java.Triangle.classify(582,582,582), EQUILATERAL);
   }
   public void test6() {
        assertEquals (triangle.Triangle.classify(1,1088,15), INVALID);
        assertEquals (triangle.src.main.java.Triangle.classify(1,1088,15), INVALID);
   }
   public void test7() {
        assertEquals (triangle.Triangle.classify(1,2,450), INVALID);
        assertEquals (triangle.src.main.java.Triangle.classify(1,2,450), INVALID);
   }
   public void test8() {
        assertEquals (triangle.Triangle.classify(1663,1088,823), SCALENE);
        assertEquals (triangle.src.main.java.Triangle.classify(1663,1088,823), SCALENE);
   }
   public void test9() {
        assertEquals (triangle.Triangle.classify(1187,1146,1), INVALID);
        assertEquals (triangle.src.main.java.Triangle.classify(1187,1146,1), INVALID);
   }
   public void test10() {
        assertEquals (triangle.Triangle.classify(1640,1640,1956), ISOSCELES);
        assertEquals (triangle.src.main.java.Triangle.classify(1640,1640,1956), ISOSCELES);
   }
   public void test11() {
        assertEquals (triangle.Triangle.classify(784,784,1956), INVALID);
        assertEquals (triangle.src.main.java.Triangle.classify(784,784,1956), INVALID);
   }
   public void test12() {
        assertEquals (triangle.Triangle.classify(1,450,1), INVALID);
        assertEquals (triangle.src.main.java.Triangle.classify(1,450,1), INVALID);
   }
   public void test13() {
        assertEquals (triangle.Triangle.classify(1146,1,1146), ISOSCELES);
        assertEquals (triangle.src.main.java.Triangle.classify(1146,1,1146), ISOSCELES);
   }
   public void test14() {
        assertEquals (triangle.Triangle.classify(1640,1956,1956), ISOSCELES);
        assertEquals (triangle.src.main.java.Triangle.classify(1640,1956,1956), ISOSCELES);
   }
   public void test15() {
        assertEquals (triangle.Triangle.classify(-1,1,1), INVALID);
        assertEquals (triangle.src.main.java.Triangle.classify(-1,1,1), INVALID);
   }
   public void test16() {
        assertEquals (triangle.Triangle.classify(1,-1,1), INVALID);
        assertEquals (triangle.src.main.java.Triangle.classify(1,-1,1), INVALID);
   }
   public void test17() {
        assertEquals (triangle.Triangle.classify(1,2,3), INVALID);
        assertEquals (triangle.src.main.java.Triangle.classify(1,2,3), INVALID);
   }
   public void test18() {
        assertEquals (triangle.Triangle.classify(2,3,1), INVALID);
        assertEquals (triangle.src.main.java.Triangle.classify(2,3,1), INVALID);
   }
   public void test19() {
        assertEquals (triangle.Triangle.classify(3,1,2), INVALID);
        assertEquals (triangle.src.main.java.Triangle.classify(3,1,2), INVALID);
   }
   public void test20() {
        assertEquals (triangle.Triangle.classify(1,1,2), INVALID);
        assertEquals (triangle.src.main.java.Triangle.classify(1,1,2), INVALID);
   }
   public void test21() {
        assertEquals (triangle.Triangle.classify(1,2,1), INVALID);
        assertEquals (triangle.src.main.java.Triangle.classify(1,2,1), INVALID);
   }
   public void test22() {
        assertEquals (triangle.Triangle.classify(2,1,1), INVALID);
        assertEquals (triangle.src.main.java.Triangle.classify(2,1,1), INVALID);
   }
   public void test23() {
        assertEquals (triangle.Triangle.classify(1,1,1), EQUILATERAL);
        assertEquals (triangle.src.main.java.Triangle.classify(1,1,1), EQUILATERAL);
   }
   public void test24() {
        assertEquals (triangle.Triangle.classify(0,1,1), INVALID);
        assertEquals (triangle.src.main.java.Triangle.classify(0,1,1), INVALID);
   }
   public void test25() {
        assertEquals (triangle.Triangle.classify(1,0,1), INVALID);
        assertEquals (triangle.src.main.java.Triangle.classify(1,0,1), INVALID);
   }
   public void test26() {
        assertEquals (triangle.Triangle.classify(1,2,-1), INVALID);
        assertEquals (triangle.src.main.java.Triangle.classify(1,2,-1), INVALID);
   }
   public void test27() {
        assertEquals (triangle.Triangle.classify(1,1,-1), INVALID);
        assertEquals (triangle.src.main.java.Triangle.classify(1,1,-1), INVALID);
   }
   public void test28() {
        assertEquals (triangle.Triangle.classify(0,0,0), INVALID);
        assertEquals (triangle.src.main.java.Triangle.classify(0,0,0), INVALID);
   }
   public void test29() {
        assertEquals (triangle.Triangle.classify(3,2,5), INVALID);
        assertEquals (triangle.src.main.java.Triangle.classify(3,2,5), INVALID);
   }
   public void test30() {
        assertEquals (triangle.Triangle.classify(5,9,2), INVALID);
        assertEquals (triangle.src.main.java.Triangle.classify(5,9,2), INVALID);
   }
   public void test31() {
        assertEquals (triangle.Triangle.classify(7,4,3), INVALID);
        assertEquals (triangle.src.main.java.Triangle.classify(7,4,3), INVALID);
   }
   public void test32() {
        assertEquals (triangle.Triangle.classify(3,8,3), INVALID);
        assertEquals (triangle.src.main.java.Triangle.classify(3,8,3), INVALID);
   }
   public void test33() {
        assertEquals (triangle.Triangle.classify(7,3,3), INVALID);
        assertEquals (triangle.src.main.java.Triangle.classify(7,3,3), INVALID);
   }
}

triangle/tarantula/TestSuite.java

deleted100644 → 0
+0 −107
Original line number Diff line number Diff line
package triangle.tarantula;

import junit.framework.TestCase;
import static triangle.tarantula.Triangle.Type.*;

public class TestSuite extends TestCase {

   public void test1() {
        assertEquals (triangle.tarantula.Triangle.classify(0,1301,1), INVALID);
   }
   public void test2() {
        assertEquals (triangle.tarantula.Triangle.classify(1108,1,1), INVALID);
   }
   public void test3() {
        assertEquals (triangle.tarantula.Triangle.classify(1,0,-665), INVALID);
   }
   public void test4() {
        assertEquals (triangle.tarantula.Triangle.classify(1,1,0), INVALID);
   }
   public void test5() {
        assertEquals (triangle.tarantula.Triangle.classify(582,582,582), EQUILATERAL);
   }
   public void test6() {
        assertEquals (triangle.tarantula.Triangle.classify(1,1088,15), INVALID);
   }
   public void test7() {
        assertEquals (triangle.tarantula.Triangle.classify(1,2,450), INVALID);
   }
   public void test8() {
        assertEquals (triangle.tarantula.Triangle.classify(1663,1088,823), SCALENE);
   }
   public void test9() {
        assertEquals (triangle.tarantula.Triangle.classify(1187,1146,1), INVALID);
   }
   public void test10() {
        assertEquals (triangle.tarantula.Triangle.classify(1640,1640,1956), ISOSCELES);
   }
   public void test11() {
        assertEquals (triangle.tarantula.Triangle.classify(784,784,1956), INVALID);
   }
   public void test12() {
        assertEquals (triangle.tarantula.Triangle.classify(1,450,1), INVALID);
   }
   public void test13() {
        assertEquals (triangle.tarantula.Triangle.classify(1146,1,1146), ISOSCELES);
   }
   public void test14() {
        assertEquals (triangle.tarantula.Triangle.classify(1640,1956,1956), ISOSCELES);
   }
   public void test15() {
        assertEquals (triangle.tarantula.Triangle.classify(-1,1,1), INVALID);
   }
   public void test16() {
        assertEquals (triangle.tarantula.Triangle.classify(1,-1,1), INVALID);
   }
   public void test17() {
        assertEquals (triangle.tarantula.Triangle.classify(1,2,3), INVALID);
   }
   public void test18() {
        assertEquals (triangle.tarantula.Triangle.classify(2,3,1), INVALID);
   }
   public void test19() {
        assertEquals (triangle.tarantula.Triangle.classify(3,1,2), INVALID);
   }
   public void test20() {
        assertEquals (triangle.tarantula.Triangle.classify(1,1,2), INVALID);
   }
   public void test21() {
        assertEquals (triangle.tarantula.Triangle.classify(1,2,1), INVALID);
   }
   public void test22() {
        assertEquals (triangle.tarantula.Triangle.classify(2,1,1), INVALID);
   }
   public void test23() {
        assertEquals (triangle.tarantula.Triangle.classify(1,1,1), EQUILATERAL);
   }
   public void test24() {
        assertEquals (triangle.tarantula.Triangle.classify(0,1,1), INVALID);
   }
   public void test25() {
        assertEquals (triangle.tarantula.Triangle.classify(1,0,1), INVALID);
   }
   public void test26() {
        assertEquals (triangle.tarantula.Triangle.classify(1,2,-1), INVALID);
   }
   public void test27() {
        assertEquals (triangle.tarantula.Triangle.classify(1,1,-1), INVALID);
   }
   public void test28() {
        assertEquals (triangle.tarantula.Triangle.classify(0,0,0), INVALID);
   }
   public void test29() {
        assertEquals (triangle.tarantula.Triangle.classify(3,2,5), INVALID);
   }
   public void test30() {
        assertEquals (triangle.tarantula.Triangle.classify(5,9,2), INVALID);
   }
   public void test31() {
        assertEquals (triangle.tarantula.Triangle.classify(7,4,3), INVALID);
   }
   public void test32() {
        assertEquals (triangle.tarantula.Triangle.classify(3,8,3), INVALID);
   }
   public void test33() {
        assertEquals (triangle.tarantula.Triangle.classify(7,3,3), INVALID);
   }
}

triangle/tarantula/Triangle.java

deleted100644 → 0
+0 −35
Original line number Diff line number Diff line
package triangle.tarantula;

public class Triangle {
	
	public enum Type {
		INVALID, SCALENE, EQUILATERAL, ISOSCELES
	};
	
	public static Type classify(int a, int b, int c) {
		int trian;
		if (a <= 0 || b <= 0 || c <= 0)
			return Type.INVALID;
		trian = 0;
		if (a == b)
			trian = trian + 1;
		if (a == c)
			trian = trian + 2;
		if (b == a) // bug should be b == c
			trian = trian + 3;
		if (trian == 0)
			if (a + b <= c || a + c <= b || b + c <= a)
				return Type.INVALID;
			else
				return Type.SCALENE;
		if (trian > 3)
			return Type.EQUILATERAL;
		if (trian == 1 && a + b > c)
			return Type.ISOSCELES;
		else if (trian == 2 && a + c > b)
			return Type.ISOSCELES;
		else if (trian == 3 && b + c > a)
			return Type.ISOSCELES;
		return Type.INVALID;
	}
}