C ++の2つのOstreamオブジェクトを等式について比較するにはどうすればよいですか?
-
29-09-2019 - |
質問
クラスの左シフト演算子を過負荷にし、出力は正常に機能します。たとえば、cout << objと書かれたラインがある場合。コンマによって分離されたフィールドを出力します。
ostream& operator<<(ostream& output, const MyClass& obj)
{
output << obj.field1 << ", " << obj.field2;
return output;
}
この操作のテストケースを書きたいと思いますが、返された結果をCXXTESTで期待される結果と比較する方法がわかりません。私は次のことを試しましたが、それは機能しませんでした:
TS_ASSERT_EQUALS(cout << "1, 50.0", cout << obj);
別のCXXTEST操作を使用するか、TS_ASSERT_EQUALSのパラメーター通過メカニズムを変更することになっていますか?
次の行を出力すると、同じ結果が得られることに注意してください。
cout << obj;
cout << "1, 50.0";
注:TS_ASSERT_EQUALSが失敗するため、プログラムをコンパイルしようとすると、コンパイラエラーがたくさんあります。
解決
コンパイルしたとしても、基本的に比較しています cout
それ自体が...
2つの異なるものに書き込んでみてください std::stringstream
s、文字列値を抽出し、これらを比較します。
OstReamフラグをテストする必要がある場合は、比較関数を定義して使用します TS_ASSERT_RELATION
.
所属していません StackOverflow