@@ -430,6 +430,7 @@ TEST(AnError, CanBeConstructedFromANameAndAMessage)
430430 auto error = sdbus::Error (sdbus::Error::Name{" org.sdbuscpp.error" }, " message" );
431431 EXPECT_THAT (error.getName (), Eq<std::string>(" org.sdbuscpp.error" ));
432432 EXPECT_THAT (error.getMessage (), Eq<std::string>(" message" ));
433+ EXPECT_TRUE (error.isValid ());
433434}
434435
435436TEST (AnError, CanBeConstructedFromANameOnly)
@@ -439,6 +440,45 @@ TEST(AnError, CanBeConstructedFromANameOnly)
439440 EXPECT_THAT (error1.getName (), Eq<std::string>(" org.sdbuscpp.error" ));
440441 EXPECT_THAT (error2.getName (), Eq<std::string>(" org.sdbuscpp.error" ));
441442
442- EXPECT_THAT (error1.getMessage (), Eq<std::string>(" " ));
443- EXPECT_THAT (error2.getMessage (), Eq<std::string>(" " ));
443+ EXPECT_TRUE (error1.getMessage ().empty ());
444+ EXPECT_TRUE (error2.getMessage ().empty ());
445+
446+ EXPECT_TRUE (error1.isValid ());
447+ EXPECT_TRUE (error2.isValid ());
448+ }
449+
450+ TEST (AnError, IsInvalidWhenConstructedWithAnEmptyName)
451+ {
452+ auto error = sdbus::Error ({});
453+
454+ EXPECT_TRUE (error.getName ().empty ());
455+ EXPECT_TRUE (error.getMessage ().empty ());
456+ EXPECT_FALSE (error.isValid ());
457+ }
458+
459+ TEST (AnErrorFactory, CanCreateAnErrorFromErrno)
460+ {
461+ auto error = sdbus::createError (ENOENT , " custom message" );
462+
463+ EXPECT_THAT (error.getName (), Eq<std::string>(" org.freedesktop.DBus.Error.FileNotFound" ));
464+ EXPECT_THAT (error.getMessage (), Eq<std::string>(" custom message (No such file or directory)" ));
465+ EXPECT_TRUE (error.isValid ());
466+ }
467+
468+ TEST (AnErrorFactory, CreatesGenericErrorWhenErrnoIsUnknown)
469+ {
470+ auto error = sdbus::createError (123456 , " custom message" );
471+
472+ EXPECT_THAT (error.getName (), Eq<std::string>(" org.freedesktop.DBus.Error.Failed" ));
473+ EXPECT_THAT (error.getMessage (), Eq<std::string>(" custom message (Unknown error 123456)" ));
474+ EXPECT_TRUE (error.isValid ());
475+ }
476+
477+ TEST (AnErrorFactory, CreatesEmptyInvalidErrorWhenErrnoIsZero)
478+ {
479+ auto error = sdbus::createError (0 , " custom message" );
480+
481+ EXPECT_TRUE (error.getName ().empty ());
482+ EXPECT_THAT (error.getMessage (), Eq<std::string>(" custom message" ));
483+ EXPECT_FALSE (error.isValid ());
444484}
0 commit comments