GaitGeneration by Graph Search
読み取り中…
検索中…
一致する文字列を見つけられません
asyncable_data_test.h
[詳解]
1
3
4// Copyright(c) 2023-2025 Design Engineering Laboratory, Saitama University
5// Released under the MIT license
6// https://opensource.org/licenses/mit-license.php
7
8#ifndef DESIGNLAB_ASYNCABLE_DATA_TEST_H_
9#define DESIGNLAB_ASYNCABLE_DATA_TEST_H_
10
11#include <doctest.h>
12
13#include "asyncable_data.h"
14
15TEST_SUITE("AsyncableData") {
17
18 TEST_CASE_TEMPLATE(
19 "GetUpdateCountTest_WhenValueIsNotUpdated_ShouldBeZeroForUpdateCount", T,
20 int, float, double, unsigned int) {
21 SUBCASE("WhenInitialized") {
22 AsyncableData<T> data;
23 CHECK_EQ(data.GetUpdateCount(), 0);
24 }
25
26 SUBCASE("WhenValueIsPassedUponInitialization") {
27 AsyncableData<T> data(1);
28 CHECK_EQ(data.GetUpdateCount(), 0);
29 }
30
31 SUBCASE("WhenOnlyReadingValues") {
32 AsyncableData<T> data(1);
33
34 T act = data.GetData();
35
36 CHECK_EQ(data.GetUpdateCount(), 0);
37
38 CHECK_EQ(act, 1); // 警告の抑制.
39 }
40 }
41
42 TEST_CASE_TEMPLATE(
43 "GetUpdateCountTest_WhenValueIsUpdated_ShouldIncrementUpdateCount", T,
44 int, float, double, unsigned int) {
45 SUBCASE("WhenValueIsUpdatedOnce_ShouldUpdateCountBeOne") {
46 AsyncableData<T> data;
47 CHECK_EQ(data.GetUpdateCount(), 0);
48
49 data.SetData(1);
50 CHECK_EQ(data.GetUpdateCount(), 1);
51 }
52
53 SUBCASE("WhenValueIsUpdatedTwice_ShouldUpdateCountBeTwo") {
54 AsyncableData<T> data;
55 CHECK_EQ(data.GetUpdateCount(), 0);
56
57 data.SetData(1);
58 data.SetData(5);
59 CHECK_EQ(data.GetUpdateCount(), 2);
60 }
61 }
62
63 TEST_CASE_TEMPLATE(
64 "GetDataTest_WhenValueIsSet_ShouldBeAbleToRetrieveSetValue", T, int,
65 float, double, unsigned int) {
66 AsyncableData<T> data;
67
68 T act1 = static_cast<T>(1);
69 data.SetData(act1);
70 CHECK_EQ(data.GetData(), act1);
71
72 T act2 = static_cast<T>(5);
73 data.SetData(act2);
74 CHECK_EQ(data.GetData(), act2);
75 }
76}
77
78#endif // DESIGNLAB_ASYNCABLE_DATA_TEST_H_
TEST_SUITE("AsyncableData")
非同期処理を行う際に,データの更新回数とデータをまとめて扱うためのクラス.