[Cuppa-users:72] Re: テストデータを外から食わす

Zurück zum Archiv-Index

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...



Cuppa-users メーリングリストの案内
Zurück zum Archiv-Index