FUKUDA Fumiki
ffuku****@ntes*****
2002年 7月 2日 (火) 14:09:24 JST
επιστημη@中間報告 です。 --- "[Cuppa-users:71] テストデータを外から食わす" / FUKUDA Fumiki / 2002/07/02 10:47:48 +0900 --- >CalcTest::testAdd() の中から: > > node = prop["/spec/CalcTest/testAdd/arg"]; > int x = node["x"].get_value(); > int y = node["y"].get_value(); > int z = node["z"].get_value(); > // calc.add(x,y) == z となるかを検証する > >みたいな感じで読み出しちゃおー。ってワケ。 えとね、ここまでできた。 //CUPPA:include=+ #include "calc.h" // テスト対象 #include "TestSpec.h" // テストデータ抽出機 #include <iostream> //CUPPA:include=- #include <cppunit/extensions/HelperMacros.h> #include <cppunit/TestAssert.h> //CUPPA:namespace=+ //CUPPA:namespace=- class CalcTest : public CppUnit::TestFixture { CPPUNIT_TEST_SUITE(CalcTest); //CUPPA:suite=+ CPPUNIT_TEST(testAdd); CPPUNIT_TEST(testSub); //CUPPA:suite=- CPPUNIT_TEST_SUITE_END(); private: // your stuff... Calc<int> c_; TestSpecLoader loader_; // テストデータ抽出機 public: CalcTest() { loader_.load("testspec.sox"); // テストデータを読んでおくれ loader_.set_root("testspec/CalcTest"); // ここをテストデータの根っこに std::cout << std::flush; } virtual void setUp() { } virtual void tearDown() { } //CUPPA:decl=+ void testAdd() { TestSpec spec = loader_.get_spec("testAdd/args"); // testAdd/args を取り出す CPPUNIT_ASSERT( !spec.empty() ); while ( spec.has_next() ) { // テストデータが残っているなら TestSpec::node_type node = spec.get_next(); // 次のテストデータを取り出して int x = TestSpec::integer(node["x"]); // x, y, expected を抽出 int y = TestSpec::integer(node["y"]); int z = TestSpec::integer(node["expected"]); std::cout << x << '+' << y << '=' << z << '?' << std::endl; c_.set(x); c_.add(y); CPPUNIT_ASSERT_EQUAL(z, c_.get()); } } void testSub() { TestSpec spec = loader_.get_spec("testSub/args"); CPPUNIT_ASSERT( !spec.empty() ); while ( spec.has_next() ) { TestSpec::node_type node = spec.get_next(); int x = TestSpec::integer(node["x"]); int y = TestSpec::integer(node["y"]); int z = TestSpec::integer(node["expected"]); std::cout << x << '-' << y << '=' << z << '?' << std::endl; c_.set(x); c_.sub(y); CPPUNIT_ASSERT_EQUAL(z, c_.get()); } } //CUPPA:decl=- }; //CUPPA:impl=+ //CUPPA:impl=- CPPUNIT_TEST_SUITE_REGISTRATION(CalcTest); ...とまぁ、こんな感じだがね。どないでしょ? > ALL -----:-----:-----:-----:-----:-----:-----:-----:-----:----- FUKUDA (episteme) Fumiki -- magical, but never a magic...