import becker.io.*;
import becker.robots.*;

class DetectorBot extends Robot
{
	public DetectorBot(City c, int st, int ave, Direction dir, int nThings)
	{
		super(c, st, ave, dir, nThings);
	}
	
	/*
	 * This command will return true if the robot is north of street 10
	 *
	 * TODO: Fill in the missing code
	 */
	public boolean isNorthOfStreet10()
	{
		// if we're north of street 10, then
		return true;
		// otherwise, return false
	}
	
	
	/*
	 * This command will return true if the robot is south of street 5
	 *
	 * TODO: Fill in the missing code
	 */
	public boolean isSouthOfStreet5()
	{
		// if we're north of street 5, then
		return true;
		// otherwise, return false
	}


	/*
	 * This command will return true if the robot is north of the street given by the parameter
	 *
	 * TODO: Fill in the missing code
	 */
	public boolean isNorthOfStreet(int theStreet)
	{
		// if we're north of theStreet, then
		return true;
		// otherwise, return false
	}

	/*
	 * This command will return true if the robot is between the two streets
	 *
	 * For this exercise, use the AND operator
	 * TODO: Fill in the missing code
	 */
	public boolean isInRangeOfStreets(int northMost, int southMost)
	{
		// if we're between the northMost & southMost streets, then
		return true;
		// otherwise, return false
	}

	/*
	 * This command will return true if the robot OUTSIDE of the given range of streets
	 *
	 * For this exercise, use the logical operator NOT, and call the isInRangeOfStreets command
	 * TODO: Fill in the missing code
	 */
	public boolean isNOTInRangeOfStreets(int northMost, int southMost)
	{
		// if we'reNOT  between the northMost & southMost streets, then
		return true;
		// otherwise, return false
	}

	/*
	 * This command will return true if the robot OUTSIDE of the given range of streets
	 *
	 * For this exercise, use the logical operator OR
	 * TODO: Fill in the missing code
	 */
	public boolean isOutsideRangeOfStreets(int northMost, int southMost)
	{
		// if we're outside the northMost & southMost streets, then
		return true;
		// otherwise, return false
	}

}




public class LogicalOperators extends Object
{
    public static void main(String[] args)
    {
	 		City bothell = new City();
			DetectorBot mary = new DetectorBot(bothell, 3, 7, Direction.NORTH, 0);
			DetectorBot fred = new DetectorBot(bothell, 14, 4, Direction.NORTH, 0);
			
			// Some 'test' code:
			// Let's make sure that this works for both the case wherein it should say 'yes':
			// and (in the next if...else) the case where it should say 'no'
			// Let's test & see if mary is north of street 10:
			if(mary.isNorthOfStreet10()  )
			{
				// We'll print out one message if this works
				System.out.println("isNorthOfStreet10 correctly says that mary is north of street 10");
			}
			else
			{
				// and we'll print out another message if it doesn't
				System.out.println("ERROR: isNorthOfStreet10 INcorrectly says that mary is NOT north of street 10");			
			}

			if(fred.isNorthOfStreet10()  )
			{
				System.out.println("ERROR: isNorthOfStreet10 INcorrectly says that fred IS north of street 10");
			}
			else
			{
				System.out.println("isNorthOfStreet10 correctly says that fred is not north of street 10");			
			}




			// TODO: ADD YOUR TEST CODE FOR isSouthOfStreet5 HERE!!!!!!!!!!!!!!!!
			
			
			
			
			
			
			// Test Code for IsNorthOfStreet
			if(mary.isNorthOfStreet(10)  )
			{
				System.out.println("isNorthOfStreet(10) correctly says that mary is north of street 10");
			}
			else
			{
				System.out.println("ERROR: isNorthOfStreet(10) INcorrectly says that mary is NOT north of street 10");			
			}

			if(mary.isNorthOfStreet(2)  )
			{
				System.out.println("ERROR: isNorthOfStreet(2) INcorrectly says that mary IS north of street 2");
			}
			else
			{
				System.out.println("isNorthOfStreet(2) correctly says that mary is north of street 2");			
			}


			if(mary.isNorthOfStreet(3)  )
			{
				System.out.println("ERROR: isNorthOfStreet(3) INcorrectly says that mary IS north of street 3");			
			}
			else
			{
				System.out.println("isNorthOfStreet(3) INcorrectly says that mary is NOT north of street 3");			
			}





			// Test Code for isInRangeOfStreets
			if(mary.isInRangeOfStreets(1, 10)  )
			{
				System.out.println("isInRangeOfStreets(1,10) correctly says that mary is between streets 1 & 10");
			}
			else
			{
				System.out.println("ERROR: isInRangeOfStreets(1, 10) INcorrectly says that mary is NOT  between streets 1 & 10");			
			}

			if(mary.isInRangeOfStreets(5, 10)  )
			{
				System.out.println("ERROR:isInRangeOfStreets(5,10) INcorrectly says that mary IS between streets 5 & 10");
			}
			else
			{
				System.out.println("isInRangeOfStreets(5,10) correctly says that mary is NOT between streets 5 & 10");
			}


			if(mary.isInRangeOfStreets(1, 2)  )
			{
				System.out.println("ERROR:isInRangeOfStreets(1,2) INcorrectly says that mary IS between streets 1 & 2");
			}
			else
			{
				System.out.println("isInRangeOfStreets(1,2) correctly says that mary is NOT between streets 1 & 2");
			}

			if(mary.isInRangeOfStreets(3, 10)  )
			{
				System.out.println("ERROR:isInRangeOfStreets(3,10) INcorrectly says that mary IS between streets 3 & 10");
			}
			else
			{
				System.out.println("isInRangeOfStreets(3,10) correctly says that mary is NOT between streets 3 & 10");
			}

			if(mary.isInRangeOfStreets(1, 3)  )
			{
				System.out.println("ERROR:isInRangeOfStreets(3,10) INcorrectly says that mary IS between streets 3 & 10");
			}
			else
			{
				System.out.println("isInRangeOfStreets(3,10) correctly says that mary is NOT between streets 3 & 10");
			}




			// Test Code for isNOTInRangeOfStreets
			if(mary.isNOTInRangeOfStreets(1, 10)  )
			{
				System.out.println("ERROR: isNOTInRangeOfStreets(1,10) INcorrectly says that mary is between streets 1 & 10");
			}
			else
			{
				System.out.println("isNOTInRangeOfStreets(1, 10) correctly says that mary is not between streets 1 & 10");			
			}

			if(mary.isNOTInRangeOfStreets(5, 10)  )
			{
				System.out.println("isNOTInRangeOfStreets(5,10) correctly says that mary is not between streets 5 & 10");
			}
			else
			{
				System.out.println("ERROR:isNOTInRangeOfStreets(5,10) INcorrectly says that mary IS between streets 5 & 10");
			}


			if(mary.isNOTInRangeOfStreets(1, 2)  )
			{
				System.out.println(":isNOTInRangeOfStreets(1,2) correctly says that mary is not between streets 1 & 2");
			}
			else
			{
				System.out.println("ERRORisNOTInRangeOfStreets(1,2) INcorrectly says that mary is  between streets 1 & 2");
			}

			if(mary.isNOTInRangeOfStreets(3, 10)  )
			{
				System.out.println("isNOTInRangeOfStreets(3,10) correctly says that mary is not between streets 3 & 10");
			}
			else
			{
				System.out.println("ERROR:isNOTInRangeOfStreets(3,10) INcorrectly says that mary is between streets 3 & 10");
			}

			if(mary.isNOTInRangeOfStreets(1, 3)  )
			{
				System.out.println("isNOTInRangeOfStreets(3,10) correctly says that mary is not between streets 3 & 10");
			}
			else
			{
				System.out.println("ERROR:isNOTInRangeOfStreets(3,10) INcorrectly says that mary is between streets 3 & 10");
			}
			
			
			
			// Test Code for isOutsideRangeOfStreets
			if(mary.isOutsideRangeOfStreets(1, 10)  )
			{
				System.out.println("ERROR: isOutsideRangeOfStreets(1,10) INcorrectly says that mary is between streets 1 & 10");
			}
			else
			{
				System.out.println("isOutsideRangeOfStreets(1, 10) correctly says that mary is not between streets 1 & 10");			
			}

			if(mary.isOutsideRangeOfStreets(5, 10)  )
			{
				System.out.println("isOutsideRangeOfStreets(5,10) correctly says that mary is not between streets 5 & 10");
			}
			else
			{
				System.out.println("ERROR:isOutsideRangeOfStreets(5,10) INcorrectly says that mary IS between streets 5 & 10");
			}


			if(mary.isOutsideRangeOfStreets(1, 2)  )
			{
				System.out.println(":isOutsideRangeOfStreets(1,2) correctly says that mary is not between streets 1 & 2");
			}
			else
			{
				System.out.println("ERROR:isOutsideRangeOfStreets(1,2) INcorrectly says that mary is  between streets 1 & 2");
			}

			if(mary.isOutsideRangeOfStreets(3, 10)  )
			{
				System.out.println("isOutsideRangeOfStreets(3,10) correctly says that mary is not between streets 3 & 10");
			}
			else
			{
				System.out.println("ERROR:isOutsideRangeOfStreets(3,10) INcorrectly says that mary is between streets 3 & 10");
			}

			if(mary.isOutsideRangeOfStreets(1, 3)  )
			{
				System.out.println("isOutsideRangeOfStreets(3,10) correctly says that mary is not between streets 3 & 10");
			}
			else
			{
				System.out.println("ERROR:isOutsideRangeOfStreets(3,10) INcorrectly says that mary is between streets 3 & 10");
			}
    }
}