1.13. Java¶
Activecode now supports Java, C++ and C through a backend server, not in the browser. You can use them by specifying the language to be java, cpp or c In addition it supports either Python3 or Python2 outside of the browser using python3 or python2 as the language. You are limited to non-graphical programs in any of these options.
.. activecode:: lc1
:language: java
:stdin: 100
import java.util.Scanner;
public class TempConv {
public static void main(String[] args) {
Double fahr;
Double cel;
Scanner in;
in = new Scanner(System.in);
System.out.println("Enter the temperature in F: ");
fahr = in.nextDouble();
cel = (fahr - 32) * 5.0/9.0;
System.out.println(fahr + " degrees F is: " + cel + " C");
System.exit(0);
}
}
1.14. Unit Tests in Java¶
You can also have hidden unit tests in Java using JUnit tests. Place the unit tests after ‘====’.
Here is a for loop that counts from 1 to 5. Can you change it to count from 2 to 10?
.. activecode:: jUnitTesting2
:language: java
:autograde: unittest
Here is a for loop that counts from 1 to 5.
Can you change it to count from 2 to 10?
~~~~
public class StudentCode
{
public static void main(String[] args)
{
for(int count = 2; count <= 10; count++)
{
System.out.println(count);
}
}
public int adder(int a, int b) {
return a+b;
}
}
====
import static org.junit.Assert.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Paths;
public class ForLoopTestTester extends CodeTestHelper
{
/* Example test for main method - should pass */
@Test
public void testMain() throws IOException
{
// I wrote a method to run a method and send back the output - only works with String[] args for now
String output = getMethodOutput("main");
String expect = "2\n3\n4\n5\n6\n7\n8\n9\n10\n";
assertEquals("Output doesn't match", cleanString(expect), cleanString (output));
}
@Test
public void testAdder() throws IOException {
StudentCode s = new StudentCode();
String msg = createMessage("Adding 2+2", ""+4, ""+s.adder(2,2));
System.out.println("testing s.adder(2,2)");
assertEquals(msg, 4, s.adder(2,2));
assertEquals("adding 3+3", 6, s.adder(3,3));
}
@Test
public void testContent() throws IOException {
String content = new String ( Files.readAllBytes( Paths.get("StudentCode. java")));
}
}
In this project, you will create a class that can tell riddles like the following:
Riddle Question: Why did the chicken cross the playground? Riddle Answer: To get to the other slide!
.. activecode:: jUnitTesting3
:language: java
:autograde: unittest
In this project, you will create a class that can tell riddles like the following:
Riddle Question: Why did the chicken cross the playground?
Riddle Answer: To get to the other slide!
~~~~
public class Riddle
{
// 2 instance variables for Riddle's question and answer: private type variableName;
private String quest;
private String ans;
// constructor
public Riddle(String initQuestion, String initAnswer)
{
// set the instance variables to the init parameter variables
quest = initQuestion;
ans = initAnswer;
}
// Print riddle question
public void printQuestion()
{
// print out the riddle question with System.out.println
System.out.println(quest);
}
// Print riddle answer
public void printAnswer()
{
// print out the riddle answer with System.out.println
System.out.println(ans);
}
// main method for testing
public static void main(String[] args)
{
// call the constructor to create 3 new Riddle objects
// call their printQuestion() and printAnswer methods
}
}
====
//import codetesthelper.*;
// Test Code for Lesson 5.1.5 - Riddle
import static org.junit.Assert.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.io.*;
public class RunestoneTests extends CodeTestHelper
{
public RunestoneTests()
{
super("Riddle"); // class name / location of main
Object[] values = new Object[]{"Question", "Answer"};
setDefaultValues(values);
}
@Test
public void testPrintQuestion()
{
String output = getMethodOutput("printQuestion");
String expect = "Question";
boolean passed = getResults(expect, output, "Checking method printQuestion()");
assertTrue(passed);
}
@Test
public void testPrintAnswer()
{
String output = getMethodOutput("printAnswer");
String expect = "Answer";
boolean passed = getResults(expect, output, "Checking method printAnswer()");
assertTrue(passed);
}
@Test
public void testDefaultConstructor()
{
String[] args = {"Question 1", "Answer 1"};
String output = checkDefaultConstructor();
String expect = "fail";
boolean passed = getResults(expect, output, "Checking default constructor");
assertTrue(passed);
}
@Test
public void testConstructor()
{
String[] args = {"Question 1", "Answer 1"};
String output = checkConstructor(args);
String expect = "pass";
boolean passed = getResults(expect, output, "Checking constructor with parameters");
assertTrue(passed);
}
@Test
public void testVariableTypes()
{
String varTypes = "String String";
String output = testInstanceVariableTypes(varTypes.split(" "));
boolean passed = getResults(varTypes, output, "Checking Instance Variable Type(s)");
assertTrue(passed);
}
@Test
public void testPrivateVariables()
{
String expect = "2 Private";
String output = testPrivateInstanceVariables();
boolean passed = getResults(expect, output, "Checking Private Instance Variable(s)");
assertTrue(passed);
}
@Test
public void testMain()
{
String output = getMethodOutput("main");
String expect = "6 line(s) of text";
String actual = " line(s) of text";
if (output.length() > 0) {
actual = output.split("\n").length + actual;
} else {
actual = output.length() + actual;
}
boolean passed = getResults(expect, actual, "Checking main method");
assertTrue(passed);
}
}
You have attempted of activities on this page