#include <iostream>
#include <stdexcept>
#include <assert.h>
class SomeClass {
public:
SomeClass(const std::string &line) {
if (line[0] != 'a') {
// ok
}
else
{
throw std::invalid_argument("The First character is 'a'! ");
}
}
};
class SomeClassTest {
public:
void ConstructorTest() {
bool hasErrorBeen = false;
try
{
SomeClass object1("Hello");
}
catch(std::invalid_argument& error)
{
hasErrorBeen = true;
}
assert(hasErrorBeen == false);
hasErrorBeen = false;
try
{
SomeClass object2("aHello");
}
catch(std::invalid_argument& error)
{
hasErrorBeen = true;
}
assert(hasErrorBeen == true);
// И тут еще 15 таких тестов, можно оформить в функцию
}
};
int main() {
SomeClassTest someClassTest;
someClassTest.ConstructorTest();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RkZXhjZXB0PgojaW5jbHVkZSA8YXNzZXJ0Lmg+CgoKY2xhc3MgU29tZUNsYXNzIHsKcHVibGljOgoJU29tZUNsYXNzKGNvbnN0IHN0ZDo6c3RyaW5nICZsaW5lKSB7CgkJaWYgKGxpbmVbMF0gIT0gJ2EnKSB7CgkJCS8vIG9rCgkJfQoJCWVsc2UKCQl7CgkJCXRocm93IHN0ZDo6aW52YWxpZF9hcmd1bWVudCgiVGhlIEZpcnN0IGNoYXJhY3RlciBpcyAnYSchICIpOwoJCX0KCX0KfTsKCgpjbGFzcyBTb21lQ2xhc3NUZXN0IHsKcHVibGljOgoJdm9pZCBDb25zdHJ1Y3RvclRlc3QoKSB7CgkJYm9vbCBoYXNFcnJvckJlZW4gPSBmYWxzZTsKCQl0cnkgCgkJewoJCQlTb21lQ2xhc3Mgb2JqZWN0MSgiSGVsbG8iKTsKCQl9CgkgICAgY2F0Y2goc3RkOjppbnZhbGlkX2FyZ3VtZW50JiBlcnJvcikKCSAgICB7CgkgICAgCWhhc0Vycm9yQmVlbiA9IHRydWU7CgkgICAgfQogICAgICAgIGFzc2VydChoYXNFcnJvckJlZW4gPT0gZmFsc2UpOwoKICAgIAloYXNFcnJvckJlZW4gPSBmYWxzZTsKCQl0cnkgCgkJewoJCQlTb21lQ2xhc3Mgb2JqZWN0MigiYUhlbGxvIik7CgkJfQoJICAgIGNhdGNoKHN0ZDo6aW52YWxpZF9hcmd1bWVudCYgZXJyb3IpCgkgICAgewoJICAgIAloYXNFcnJvckJlZW4gPSB0cnVlOwoJICAgIH0KICAgICAgICBhc3NlcnQoaGFzRXJyb3JCZWVuID09IHRydWUpOwoKICAgICAgICAvLyDQmCDRgtGD0YIg0LXRidC1IDE1INGC0LDQutC40YUg0YLQtdGB0YLQvtCyLCDQvNC+0LbQvdC+INC+0YTQvtGA0LzQuNGC0Ywg0LIg0YTRg9C90LrRhtC40Y4KICAgIH0KfTsKCmludCBtYWluKCkgewoJCglTb21lQ2xhc3NUZXN0IHNvbWVDbGFzc1Rlc3Q7Cglzb21lQ2xhc3NUZXN0LkNvbnN0cnVjdG9yVGVzdCgpOwoKICAgIHJldHVybiAwOwp9Cg==