5#include "Stroika/Foundation/StroikaPreComp.h"
7#include "Stroika/Foundation/Containers/Common.h"
9#include "Stroika/Foundation/Debug/Debugger.h"
11#include "TestHarness.h"
13#include "ArchtypeClasses.h"
23 constexpr int kKnownGoodBitPatternValue_ = 0x0BADBEEF;
26OnlyCopyableMoveableAndTotallyOrdered::OnlyCopyableMoveableAndTotallyOrdered (
size_t v)
28 , fConstructed_{kKnownGoodBitPatternValue_}
34 : fValue_{src.fValue_}
35 , fConstructed_{kKnownGoodBitPatternValue_}
38 VerifyTestResult (src.fConstructed_ == kKnownGoodBitPatternValue_);
42 : fValue_{src.fValue_}
43 , fConstructed_{kKnownGoodBitPatternValue_}
46 VerifyTestResult (src.fConstructed_ == kKnownGoodBitPatternValue_);
49OnlyCopyableMoveableAndTotallyOrdered::~OnlyCopyableMoveableAndTotallyOrdered ()
51 VerifyTestResult (fConstructed_ == kKnownGoodBitPatternValue_);
52 VerifyTestResult (sTotalLiveObjects_ != 0);
54 fConstructed_ = ~kKnownGoodBitPatternValue_;
55 VerifyTestResult (fConstructed_ != kKnownGoodBitPatternValue_);
58size_t OnlyCopyableMoveableAndTotallyOrdered::GetTotalLiveCount ()
60 return sTotalLiveObjects_;
68OnlyCopyableMoveableAndTotallyOrdered::operator size_t ()
const
70 VerifyTestResult (fConstructed_ == kKnownGoodBitPatternValue_);
76 VerifyTestResult (fConstructed_ == kKnownGoodBitPatternValue_);
77 VerifyTestResult (rhs.fConstructed_ == kKnownGoodBitPatternValue_);
78 return fValue_ == rhs.fValue_;
83 VerifyTestResult (fConstructed_ == kKnownGoodBitPatternValue_);
84 VerifyTestResult (rhs.fConstructed_ == kKnownGoodBitPatternValue_);
85 return fValue_ <=> rhs.fValue_;
93OnlyCopyableMoveable::OnlyCopyableMoveable (
size_t v)
95 , fConstructed_{kKnownGoodBitPatternValue_}
101 : fValue_{src.fValue_}
102 , fConstructed_{kKnownGoodBitPatternValue_}
104 ++sTotalLiveObjects_;
105 VerifyTestResult (src.fConstructed_ == kKnownGoodBitPatternValue_);
109 : fValue_{src.fValue_}
110 , fConstructed_{kKnownGoodBitPatternValue_}
112 ++sTotalLiveObjects_;
113 VerifyTestResult (src.fConstructed_ == kKnownGoodBitPatternValue_);
116OnlyCopyableMoveable::~OnlyCopyableMoveable ()
118 VerifyTestResult (fConstructed_ == kKnownGoodBitPatternValue_);
119 VerifyTestResult (sTotalLiveObjects_ != 0);
120 --sTotalLiveObjects_;
121 fConstructed_ = ~kKnownGoodBitPatternValue_;
122 VerifyTestResult (fConstructed_ != kKnownGoodBitPatternValue_);
125OnlyCopyableMoveable::operator size_t ()
const
127 VerifyTestResult (fConstructed_ == kKnownGoodBitPatternValue_);
131size_t OnlyCopyableMoveable::GetTotalLiveCount ()
133 return sTotalLiveObjects_;