@@ -13,12 +13,14 @@ namespace
1313 constexpr auto Base_VirtualMethod{ L" Base::VirtualMethod" sv };
1414 constexpr auto Base_OverridableMethod{ L" Base::OverridableMethod" sv };
1515 constexpr auto Base_OverridableVirtualMethod{ L" Base::OverridableVirtualMethod" sv };
16+ constexpr auto Base_OverridableNoexceptMethod{ 42 };
1617
1718 constexpr auto Derived_VirtualMethod{ L" Derived::VirtualMethod" sv };
1819 constexpr auto Derived_OverridableVirtualMethod{ L" Derived::OverridableVirtualMethod" sv };
1920
2021 constexpr auto OverriddenBase_OverridableMethod{ L" OverriddenBase::OverridableMethod" sv };
2122 constexpr auto OverriddenBase_OverridableVirtualMethod{ L" OverriddenBase::OverridableVirtualMethod" sv };
23+ constexpr auto OverriddenBase_OverridableNoexceptMethod{ 1337 };
2224}
2325
2426TEST_CASE (" Composable.Base" )
@@ -27,6 +29,7 @@ TEST_CASE("Composable.Base")
2729 REQUIRE (base.VirtualMethod () == Base_VirtualMethod);
2830 REQUIRE (base.CallOverridableMethod () == Base_OverridableMethod);
2931 REQUIRE (base.CallOverridableVirtualMethod () == Base_OverridableVirtualMethod);
32+ REQUIRE (base.CallOverridableNoexceptMethod () == Base_OverridableNoexceptMethod);
3033}
3134
3235TEST_CASE (" Composable.OverriddenBase" )
@@ -39,6 +42,7 @@ TEST_CASE("Composable.OverriddenBase")
3942 REQUIRE (object.VirtualMethod () == Base_VirtualMethod);
4043 REQUIRE (object.CallOverridableMethod () == Base_OverridableMethod);
4144 REQUIRE (object.CallOverridableVirtualMethod () == Base_OverridableVirtualMethod);
45+ REQUIRE (object.CallOverridableNoexceptMethod () == Base_OverridableNoexceptMethod);
4246 }
4347 {
4448 struct OverriddenBase : BaseT<OverriddenBase>
@@ -52,15 +56,22 @@ TEST_CASE("Composable.OverriddenBase")
5256 {
5357 return hstring (OverriddenBase_OverridableVirtualMethod);
5458 }
59+
60+ int32_t OverridableNoexceptMethod () const noexcept
61+ {
62+ return OverriddenBase_OverridableNoexceptMethod;
63+ }
5564 };
5665 auto object = make<OverriddenBase>();
5766 REQUIRE (object.VirtualMethod () == Base_VirtualMethod);
5867 REQUIRE (object.CallOverridableMethod () == OverriddenBase_OverridableMethod);
5968 REQUIRE (object.CallOverridableVirtualMethod () == OverriddenBase_OverridableVirtualMethod);
69+ REQUIRE (object.CallOverridableNoexceptMethod () == OverriddenBase_OverridableNoexceptMethod);
6070 }
6171 {
6272 const std::wstring OverridableMethodResult = std::wstring (OverriddenBase_OverridableMethod) + L" =>" + Base_OverridableMethod.data ();
6373 const std::wstring OverridableVirtualMethodResult = std::wstring (OverriddenBase_OverridableVirtualMethod) + L" =>" + Base_OverridableVirtualMethod.data ();
74+ const int32_t OverridableNoexceptMethodResult = OverriddenBase_OverridableNoexceptMethod + Base_OverridableNoexceptMethod;
6475
6576 struct OverriddenBase : BaseT<OverriddenBase>
6677 {
@@ -73,11 +84,17 @@ TEST_CASE("Composable.OverriddenBase")
7384 {
7485 return OverriddenBase_OverridableVirtualMethod + L" =>" + BaseT<OverriddenBase>::OverridableVirtualMethod ();
7586 }
87+
88+ int32_t OverridableNoexceptMethod () const noexcept
89+ {
90+ return OverriddenBase_OverridableNoexceptMethod + BaseT<OverriddenBase>::OverridableNoexceptMethod ();
91+ }
7692 };
7793 auto object = make<OverriddenBase>();
7894 REQUIRE (object.VirtualMethod () == Base_VirtualMethod);
7995 REQUIRE (object.CallOverridableMethod () == OverridableMethodResult);
8096 REQUIRE (object.CallOverridableVirtualMethod () == OverridableVirtualMethodResult);
97+ REQUIRE (object.CallOverridableNoexceptMethod () == OverridableNoexceptMethodResult);
8198 }
8299}
83100
@@ -88,6 +105,7 @@ TEST_CASE("Composable.Derived")
88105 REQUIRE (obj.VirtualMethod () == Derived_VirtualMethod);
89106 REQUIRE (obj.CallOverridableMethod () == Base_OverridableMethod);
90107 REQUIRE (obj.CallOverridableVirtualMethod () == Derived_OverridableVirtualMethod);
108+ REQUIRE (obj.CallOverridableNoexceptMethod () == Base_OverridableNoexceptMethod);
91109}
92110
93111namespace
0 commit comments