Ots는 제3자 소프트웨어를 포함한다.

11.1. BugslayerUtil

BugslayerUtil은 [Debugging App]에서 제공하는 디버깅용 라이브러리이다.

11.2. Loki

Loki는 [Modern C++]에서 제공하는 템플릿을 활용한 디자인 패턴 라이브러리이다.

11.3. RapidXML

RapidXml은 XML 파서로 하위 element는 node를 통해 접근하고, 같은 레벨의 element는 sibling을 통해 접근한다. 사용 예는 다음과 같다:

// xml 파일을 오픈한다.
rapidxml::file< wchar_t > xmlfile( message_symbol_file );
rapidxml::xml_document< wchar_t > doc;

// xml 파일을 파싱한다.
doc.parse<0>( xmlfile.data() );  

// 첫번째 노드를 구한다. (root element)
rapidxml::xml_node< wchar_t >* child = doc.first_node( 0 );
if ( child )
{    
// 하위 element를 구한다.
child = child->first_node( 0 );

// 하위 element를 순회한다.
while ( child )
{
do something…
// 같은 수준의 다음 element를 구한다.
child = child->next_sibling();
}
}

11.4. CPP Unit Test

CppUnitTest는 non-GUI 소프트웨어 모듈의 동작을 단순하게 테스트하기 위한 테스트 프로그램이다. CppUnitTest의 클래스 다이어그램은 다음과 같다:

Figure: CppUnitTest class diagram

TestRegistry 클래스는 singly linked list로 연결된 Test 클래스를 유지한다. Test 클래스는 pure virtual 함수인 run()을 포함하고 있으며, Test 클래스의 derived class의 run() override는 테스트 케이스를 구현한다.

테스트 프로그램의 main은 다음과 같다:

int _tmain(int /*argc*/, _TCHAR* /*argv*/[])
{
TestResult tr;
TestRegistry::
runAllTests(tr);
return 0;
}

테스트 케이스는 다음과 같이 추가한다:

TEST(Tokenizer, Input0)
{
wchar_t expected[]{ L”” };
swa::Tokenizer actual;
INT64_EQUAL(1, actual.get_size())
WSTR_EQUAL(expected, actual[0])
WSTR_EQUAL(expected, actual.to_string().c_str())  

actual.tokenize(0);
INT64_EQUAL(1, actual.get_size())
WSTR_EQUAL(expected, actual[0])
WSTR_EQUAL(expected, actual.to_string().c_str())
}

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다