package org.teachingkidsprogramming.recipes.quizzes.tests;
import org.junit.Test;
import org.teachingextensions.approvals.lite.reporters.DelayedClipboardReporter;
import org.teachingextensions.approvals.lite.reporters.DiffReporter;
import org.teachingextensions.approvals.lite.reporters.UseReporter;
import org.teachingextensions.approvals.lite.util.JUnitUtils;
import org.teachingextensions.logo.Tortoise;
import org.teachingextensions.logo.Turtle;
import org.teachingextensions.logo.utils.TortoiseUtils;
import org.teachingextensions.logo.utils.EventUtils.MessageBox;
import org.teachingkidsprogramming.recipes.quizzes.graders.HiLowQuiz;
import org.teachingkidsprogramming.recipes.quizzes.graders.HiLowQuizGrader;
import org.teachingkidsprogramming.recipes.quizzes.graders.MessageBoxMock;
@UseReporter({DelayedClipboardReporter.class, DiffReporter.class})
public class HiLowQuizTest
{
public static class HiLowCorrectQuiz extends HiLowQuiz
{
@Override
public void question1()
{
// if the Y position of the tortoise is 115
if (Tortoise.getY() == 115)
{
// turn the tortoise to the right 63 degrees
Tortoise.turn(63);
}
}
@Override
public void question2()
{
// if the X position of tortoise is less than Y position of tortoise
if (Tortoise.getX() < Tortoise.getY())
{
// turn the tortoise 54 degrees to the left
Tortoise.turn(-54);
}
else
{
// otherwise turn the tortoise 22 degrees to the right
Tortoise.turn(22);
}
}
@Override
public void question3()
{
// display the message "elcomeway omehay!"
MessageBox.showMessage("elcomeway omehay!");
}
@Override
public void question4()
{
// if the Y position of tortoise is greater than 50
if (Tortoise.getY() > 50)
{
// turn the tortoise 177 degrees to the left
Tortoise.turn(-177);
}
}
}
@Test
public void testCorrect() throws Exception
{
JUnitUtils.assumeNotHeadless();
HiLowQuizGrader.TURTLE_SPEED = Turtle.TEST_SPEED;
HiLowQuizGrader.MESSAGE_BOX = new MessageBoxMock();
new HiLowQuizGrader().grade(new HiLowCorrectQuiz());
TortoiseUtils.verifyForOs();
}
public static class HiLowIncorrectQuiz extends HiLowQuiz
{
@Override
public void question1()
{
}
@Override
public void question2()
{
}
@Override
public void question3()
{
}
@Override
public void question4()
{
}
}
@Test
public void testIncorrect() throws Exception
{
JUnitUtils.assumeNotHeadless();
HiLowQuizGrader.TURTLE_SPEED = Turtle.TEST_SPEED;
new HiLowQuizGrader().grade(new HiLowIncorrectQuiz());
TortoiseUtils.verifyForOs();
}
}