MCPcopy Create free account
hub / github.com/catboost/catboost / TestOperatorBool

Method TestOperatorBool

util/generic/ptr_ut.cpp:568–628  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

566} // namespace
567
568void TPointerTest::TestOperatorBool() {
569 using TVec = TVector<ui32>;
570
571 // to be sure TImplicitlyCastable works as expected
572 UNIT_ASSERT((TImplicitlyCastable<int, bool>::Result));
573 UNIT_ASSERT((TImplicitlyCastable<double, int>::Result));
574 UNIT_ASSERT((TImplicitlyCastable<int*, void*>::Result));
575 UNIT_ASSERT(!(TImplicitlyCastable<void*, int*>::Result));
576 UNIT_ASSERT((TImplicitlyCastable<TImplicitlyCastableToBool, bool>::Result));
577 UNIT_ASSERT((TImplicitlyCastable<TImplicitlyCastableToBool, int>::Result));
578 UNIT_ASSERT((TImplicitlyCastable<TImplicitlyCastableToBool, ui64>::Result));
579 UNIT_ASSERT(!(TImplicitlyCastable<TImplicitlyCastableToBool, void*>::Result));
580
581 // pointers
582 UNIT_ASSERT(!(TImplicitlyCastable<TSimpleSharedPtr<TVec>, int>::Result));
583 UNIT_ASSERT(!(TImplicitlyCastable<TAutoPtr<ui64>, ui64>::Result));
584 UNIT_ASSERT(!(TImplicitlyCastable<THolder<TVec>, bool>::Result)); // even this
585
586 {
587 // mostly a compilability test
588
589 THolder<TVec> a;
590 UNIT_ASSERT(!a);
591 UNIT_ASSERT(!bool(a));
592 if (a) {
593 UNIT_ASSERT(false);
594 }
595 if (!a) {
596 UNIT_ASSERT(true);
597 }
598
599 a.Reset(new TVec);
600 UNIT_ASSERT(a);
601 UNIT_ASSERT(bool(a));
602 if (a) {
603 UNIT_ASSERT(true);
604 }
605 if (!a) {
606 UNIT_ASSERT(false);
607 }
608
609 THolder<TVec> b(new TVec);
610 UNIT_ASSERT(a.Get() != b.Get());
611 UNIT_ASSERT(a != b);
612 if (a == b) {
613 UNIT_ASSERT(false);
614 }
615 if (a != b) {
616 UNIT_ASSERT(true);
617 }
618 if (!(a && b)) {
619 UNIT_ASSERT(false);
620 }
621 if (a && b) {
622 UNIT_ASSERT(true);
623 }
624
625 // int i = a; // does not compile

Callers

nothing calls this directly

Calls 2

ResetMethod · 0.45
GetMethod · 0.45

Tested by

no test coverage detected