============================================================================== TEST CASES ==============================================================================
| 34 | // TEST CASES |
| 35 | //============================================================================== |
| 36 | TEST(TaskId, DefaultInitialization) |
| 37 | { |
| 38 | MockTaskId idMain; //empty |
| 39 | MockTaskId idMain2(MockTaskId::ThisThreadTag{}); //has main's thread id |
| 40 | MockTaskId idCoro(quantum::CoroContextTag{}); |
| 41 | MockTaskId idCoroCopy = idCoro; |
| 42 | idCoro.assign(); //set current thread id |
| 43 | MockTaskId idCoro2(quantum::CoroContextTag{}); |
| 44 | MockTaskId idIo(quantum::ThreadContextTag{}); |
| 45 | idIo.assign(); //set current thread id |
| 46 | MockTaskId idIo2(quantum::ThreadContextTag{}); |
| 47 | |
| 48 | EXPECT_NE(idMain, idMain2); |
| 49 | EXPECT_EQ(idMain2, quantum::local::taskId()); |
| 50 | EXPECT_NE(idCoro, idCoro2); |
| 51 | EXPECT_EQ(idCoro, idCoroCopy); //do not compare thread ids, only coroutine ids |
| 52 | EXPECT_NE(idIo, idIo2); |
| 53 | EXPECT_NE(idCoro, idIo); |
| 54 | EXPECT_NE(idCoro, idMain); |
| 55 | EXPECT_NE(idIo, idMain); |
| 56 | |
| 57 | //check if it's a coroutine |
| 58 | EXPECT_TRUE(idCoro.isCoroutine()); |
| 59 | EXPECT_FALSE(idMain.isCoroutine()); |
| 60 | EXPECT_FALSE(idIo.isCoroutine()); |
| 61 | |
| 62 | //check the thread ids |
| 63 | EXPECT_NE(idMain.threadId(), idCoro.threadId()); |
| 64 | EXPECT_EQ(idMain2.threadId(), idCoro.threadId()); |
| 65 | EXPECT_EQ(idCoro.threadId(), idIo.threadId()); |
| 66 | EXPECT_EQ(std::this_thread::get_id(), idCoro.threadId()); |
| 67 | EXPECT_EQ(std::thread::id(), idCoro2.threadId()); |
| 68 | EXPECT_EQ(0, idMain.id()); |
| 69 | EXPECT_NE(idCoro.id(), idCoro2.id()); |
| 70 | EXPECT_NE(idIo.id(), idIo2.id()); |
| 71 | } |
| 72 | |
| 73 | TEST(TaskId, Uniqueness) |
| 74 | { |
nothing calls this directly
no test coverage detected