productpersistencetestcase.cpp

来自「著名的uncle Bob的Agile software development的」· C++ 代码 · 共 53 行

CPP
53
字号
#include "ProductPersistenceTestCase.h"
#include <strstream.h>
#include "product.h"
#include "persistentProduct.h"
#include "persistentObject.h"
#include "assembly.h"
#include "persistentAssembly.h"

void ProductPersistenceTestCase::setUp ()
{
}

void ProductPersistenceTestCase::testWriteProduct()
{
  ostrstream s;
  Product* p = new PersistentProduct("Cheerios");
  PersistentObject* po = dynamic_cast<PersistentObject*>(p);
  assert(po);
  po->write(s);
  char* writtenString = s.str();
  assert(strcmp("<PRODUCT><NAME>Cheerios</NAME></PRODUCT>", writtenString) == 0);
}

void ProductPersistenceTestCase::testWriteAssembly()
{
  ostrstream s;
  Assembly* a = new PersistentAssembly("Wheaties", "7734");
  PersistentObject* po = dynamic_cast<PersistentObject*>(a);
  assert(po);
  po->write(s);
  char* writtenString = s.str();
  assert(strcmp("<ASSEMBLY><NAME>Wheaties</NAME><ASSYCODE>7734</ASSYCODE></ASSEMBLY>", writtenString) == 0);

}

//------------------------------------------
template <class T> 
TestCaller<T>* makeTestCaller(char* name, void (T::*f)() )
{
  return new TestCaller<T>(name, f);
}

Test *ProductPersistenceTestCase::suite ()
{
  TestSuite *testSuite = new TestSuite ("ProductPersistenceTestCase");
    testSuite->addTest (makeTestCaller("testWriteProduct", &ProductPersistenceTestCase::testWriteProduct));
    testSuite->addTest (makeTestCaller("testWriteAssembly", &ProductPersistenceTestCase::testWriteAssembly));

  return testSuite;
}


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?