Пример #1
0
// test read -- divide by zero exeption
TEST_F(RationalTest, TestReadDivideByZeroException) {
	Rational actual;
	Rational actual2;
	std::stringstream ss;
	std::stringstream ss2;
	ss.str("4/0");
	ss2.str("4/0");

	try {
		actual.read(ss);
		FAIL();
	}
	catch (DivideByZeroException &ex) {
		std::cout << ex << std::endl;
	}
	catch (std::exception) {
		FAIL();
	}

	try {
		ss2 >> actual2;
		FAIL();
	}
	catch (DivideByZeroException &ex) {
		std::cout << ex << std::endl;
	}
	catch (std::exception) {
		FAIL();
	}
}
Пример #2
0
// test read -- invalid format exception
TEST_F(RationalTest, TestReadInvalidFormatException) {
	Rational actual;
	Rational actual2;
	std::stringstream ss;
	std::stringstream ss2;
	std::string expected = "4/"; // set to an invalid format
	ss.str(expected);  
	ss2.str(expected);

	try {
		actual.read(ss);
		FAIL();
	}
	catch (InvalidFormatException &ex) {
		std::cout << ex << std::endl;		
	}
	catch (std::exception) {
		FAIL();
	}

	try {
		ss2 >> actual2;
		FAIL();
	}
	catch (InvalidFormatException &ex) {
		std::cout << ex << std::endl;
	}
	catch (std::exception) {
		FAIL();
	}

	expected = "12.";
	ss.clear();
	ss.str(expected); 
	ss2.clear();
	ss2.str(expected);

	try {
		actual.read(ss);
		FAIL();
	}
	catch (InvalidFormatException &ex) {
		std::cout << ex << std::endl;
	}
	catch (std::exception) {
		FAIL();
	}

	try {
		ss2 >> actual2;
		FAIL();
	}
	catch (InvalidFormatException &ex) {
		std::cout << ex << std::endl;
	}
	catch (std::exception) {
		FAIL();
	}

	expected = "12/12/43";
	ss.clear();
	ss.str(expected);   
	ss2.clear();
	ss2.str(expected);

	try {
		actual.read(ss);
		FAIL();
	}
	catch (InvalidFormatException &ex) {
		std::cout << ex << std::endl;
	}
	catch (std::exception) {
		FAIL();
	}

	try {
		ss2 >> actual2;
		FAIL();
	}
	catch (InvalidFormatException &ex) {
		std::cout << ex << std::endl;
	}
	catch (std::exception) {
		FAIL();
	}

	expected = "abcd";
	ss.clear();
	ss.str(expected);
	ss2.clear();
	ss2.str(expected);

	try {
		actual.read(ss);
		FAIL();
	}
	catch (InvalidFormatException &ex) {
		std::cout << ex << std::endl;
	}
	catch (std::exception) {
		FAIL();
	}

	try {
		ss2 >> actual2;
		FAIL();
	}
	catch (InvalidFormatException &ex) {
		std::cout << ex << std::endl;
	}
	catch (std::exception) {
		FAIL();
	}

	expected = "";
	ss.clear();
	ss.str(expected);
	ss2.clear();
	ss2.str(expected);

	try {
		actual.read(ss);
		FAIL();
	}
	catch (InvalidFormatException &ex) {
		std::cout << ex << std::endl;
	}
	catch (std::exception) {
		FAIL();
	}

	try {
		ss2 >> actual2;
		FAIL();
	}
	catch (InvalidFormatException &ex) {
		std::cout << ex << std::endl;
	}
	catch (std::exception) {
		FAIL();
	}

	expected = "12/3 12";
	ss.clear();
	ss.str(expected);
	ss2.clear();
	ss2.str(expected);

	try {
		actual.read(ss);
		FAIL();
	}
	catch (InvalidFormatException &ex) {
		std::cout << ex << std::endl;
	}
	catch (std::exception) {
		FAIL();
	}

	try {
		ss2 >> actual2;
		FAIL();
	}
	catch (InvalidFormatException &ex) {
		std::cout << ex << std::endl;
	}
	catch (std::exception) {
		FAIL();
	}
}
Пример #3
0
// test read
TEST_F(RationalTest, TestRead) {
	Rational actual;
	Rational actual2;
	std::stringstream ss;
	std::stringstream ss2;
	ss.str("4/3");
	ss2.str("4/3");
	actual.read(ss);
	ss2 >> actual2;

	EXPECT_EQ(Rational(4, 3), actual);
	EXPECT_EQ(Rational(4, 3), actual2);

	ss.clear();
	ss.str("30");
	ss2.clear();
	ss2.str("30");
	actual.read(ss);
	ss2 >> actual2;

	EXPECT_EQ(Rational(30), actual);
	EXPECT_EQ(Rational(30), actual2);

	ss.clear();
	ss.str("-30/60");
	ss2.clear();
	ss2.str("-30/60");
	actual.read(ss);
	ss2 >> actual2;

	EXPECT_EQ(half.negate(), actual);
	EXPECT_EQ(half.negate(), actual2);

	ss.clear();
	ss.str("0.75");
	ss2.clear();
	ss2.str("0.75");
	actual.read(ss);
	ss2 >> actual2;

	EXPECT_EQ(Rational(3,4), actual);
	EXPECT_EQ(Rational(3,4), actual2);

	ss.clear();
	ss.str("12.5/2.5");   // this is a valid rational number -- comes out to 5
	ss2.clear();
	ss2.str("12.5/2.5");
	actual.read(ss);
	ss2 >> actual2;

	EXPECT_EQ(Rational(5), actual);
	EXPECT_EQ(Rational(5), actual2);

	// allow trailing spaces
	ss.clear();
	ss.str("12/3 ");
	ss2.clear();
	ss2.str("12/3 ");
	actual.read(ss);
	ss2 >> actual2;

	EXPECT_EQ(Rational(4), actual);
	EXPECT_EQ(Rational(4), actual2);
	
}