#include "OmptAssertEvent.h" #include "OmptAsserter.h" #include "OmptTester.h" #include #include "gtest/gtest.h" using OS = omptest::ObserveState; using OAE = omptest::OmptAssertEvent; TEST(CompareOperatorTests, ThreadBeginIdentity) { auto TBInitial = OAE::ThreadBegin("dflt", "", OS::Always, ompt_thread_initial); auto TBWorker = OAE::ThreadBegin("dflt", "", OS::Always, ompt_thread_worker); auto TBOther = OAE::ThreadBegin("dflt", "", OS::Always, ompt_thread_other); auto TBUnknown = OAE::ThreadBegin("dflt", "", OS::Always, ompt_thread_unknown); ASSERT_EQ(TBInitial, TBInitial); ASSERT_EQ(TBWorker, TBWorker); ASSERT_EQ(TBOther, TBOther); ASSERT_EQ(TBUnknown, TBUnknown); } TEST(CompareOperatorTests, ThreadEndIdentity) { auto TE = OAE::ThreadEnd("dflt", "", OS::Always); ASSERT_EQ(TE, TE); } TEST(CompareOperatorTests, ParallelBeginIdentity) { auto PBNumT = OAE::ParallelBegin("thrdenable", "", OS::Always, 3); ASSERT_EQ(PBNumT, PBNumT); } TEST(CompareOperatorTests, ParallelEndIdentity) { auto PEDflt = OAE::ParallelEnd("dflt", "", OS::Always); // TODO: Add cases with parallel data set, task data set, flags ASSERT_EQ(PEDflt, PEDflt); } TEST(CompareOperatorTests, WorkIdentity) { auto WDLoopBgn = OAE::Work("loopbgn", "", OS::Always, ompt_work_loop, ompt_scope_begin); auto WDLoopEnd = OAE::Work("loopend", "", OS::Always, ompt_work_loop, ompt_scope_end); ASSERT_EQ(WDLoopBgn, WDLoopBgn); ASSERT_EQ(WDLoopEnd, WDLoopEnd); auto WDSectionsBgn = OAE::Work("sectionsbgn", "", OS::Always, ompt_work_sections, ompt_scope_begin); auto WDSectionsEnd = OAE::Work("sectionsend", "", OS::Always, ompt_work_sections, ompt_scope_end); // TODO: singleexecutor, single_other, workshare, distribute, taskloop, scope, // loop_static, loop_dynamic, loop_guided, loop_other ASSERT_EQ(WDSectionsBgn, WDSectionsBgn); ASSERT_EQ(WDSectionsEnd, WDSectionsEnd); } TEST(CompareOperatorTests, DispatchIdentity) { auto DIDflt = OAE::Dispatch("dflt", "", OS::Always); ASSERT_EQ(DIDflt, DIDflt); } TEST(CompareOperatorTests, TaskCreateIdentity) { auto TCDflt = OAE::TaskCreate("dflt", "", OS::Always); ASSERT_EQ(TCDflt, TCDflt); } TEST(CompareOperatorTests, TaskScheduleIdentity) { auto TS = OAE::TaskSchedule("dflt", "", OS::Always); ASSERT_EQ(TS, TS); } TEST(CompareOperatorTests, ImplicitTaskIdentity) { auto ITDfltBgn = OAE::ImplicitTask("dfltbgn", "", OS::Always, ompt_scope_begin); auto ITDfltEnd = OAE::ImplicitTask("dfltend", "", OS::Always, ompt_scope_end); ASSERT_EQ(ITDfltBgn, ITDfltBgn); ASSERT_EQ(ITDfltEnd, ITDfltEnd); } TEST(CompareOperatorTests, SyncRegionIdentity) { auto SRDfltBgn = OAE::SyncRegion("srdfltbgn", "", OS::Always, ompt_sync_region_barrier_explicit, ompt_scope_begin); auto SRDfltEnd = OAE::SyncRegion("srdfltend", "", OS::Always, ompt_sync_region_barrier_explicit, ompt_scope_end); ASSERT_EQ(SRDfltBgn, SRDfltBgn); ASSERT_EQ(SRDfltEnd, SRDfltEnd); } TEST(CompareOperatorTests, TargetIdentity) { auto TargetDfltBgn = OAE::Target("dfltbgn", "", OS::Always, ompt_target, ompt_scope_begin); auto TargetDfltEnd = OAE::Target("dfltend", "", OS::Always, ompt_target, ompt_scope_end); ASSERT_EQ(TargetDfltBgn, TargetDfltBgn); ASSERT_EQ(TargetDfltEnd, TargetDfltEnd); auto TargetDevBgn = OAE::Target("tgtdevbgn", "", OS::Always, ompt_target, ompt_scope_begin, 1); auto TargetDevEnd = OAE::Target("tgtdevend", "", OS::Always, ompt_target, ompt_scope_end, 1); ASSERT_EQ(TargetDevBgn, TargetDevBgn); ASSERT_EQ(TargetDevEnd, TargetDevEnd); } TEST(CompareOperatorTests, BufferRecordIdentity) { // Default, no time limit or anything auto BRDflt = OAE::BufferRecord("dflt", "", OS::Always, ompt_callback_target_submit); // Minimum time set, no max time auto BRMinSet = OAE::BufferRecord("minset", "", OS::Always, ompt_callback_target_submit, 10); // Minimum time and maximum time set auto BRMinMaxSet = OAE::BufferRecord("minmaxset", "", OS::Always, ompt_callback_target_submit, {10, 100}); ASSERT_EQ(BRDflt, BRDflt); ASSERT_EQ(BRMinSet, BRMinSet); ASSERT_EQ(BRMinMaxSet, BRMinMaxSet); } // Add main definition OMPTEST_TESTSUITE_MAIN()