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
15
16TEST_SUITE("AsyncableData")
17{
19
20 TEST_CASE_TEMPLATE("GetUpdateCountTest_WhenValueIsNotUpdated_ShouldBeZeroForUpdateCount",
21 T, int, float, double, unsigned int)
22 {
23 SUBCASE("WhenInitialized")
24 {
25 AsyncableData<T> data;
26 CHECK_EQ(data.GetUpdateCount(), 0);
27 }
28
29 SUBCASE("WhenValueIsPassedUponInitialization")
30 {
31 AsyncableData<T> data(1);
32 CHECK_EQ(data.GetUpdateCount(), 0);
33 }
34
35 SUBCASE("WhenOnlyReadingValues")
36 {
37 AsyncableData<T> data(1);
38
39 T act = data.GetData();
40
41 CHECK_EQ(data.GetUpdateCount(), 0);
42
43 CHECK_EQ(act, 1); // 警告の抑制.
44 }
45 }
46
47 TEST_CASE_TEMPLATE("GetUpdateCountTest_WhenValueIsUpdated_ShouldIncrementUpdateCount",
48 T, int, float, double, unsigned int)
49 {
50 SUBCASE("WhenValueIsUpdatedOnce_ShouldUpdateCountBeOne")
51 {
52 AsyncableData<T> data;
53 CHECK_EQ(data.GetUpdateCount(), 0);
54
55 data.SetData(1);
56 CHECK_EQ(data.GetUpdateCount(), 1);
57 }
58
59 SUBCASE("WhenValueIsUpdatedTwice_ShouldUpdateCountBeTwo")
60 {
61 AsyncableData<T> data;
62 CHECK_EQ(data.GetUpdateCount(), 0);
63
64 data.SetData(1);
65 data.SetData(5);
66 CHECK_EQ(data.GetUpdateCount(), 2);
67 }
68 }
69
70 TEST_CASE_TEMPLATE("GetDataTest_WhenValueIsSet_ShouldBeAbleToRetrieveSetValue",
71 T, int, float, double, unsigned int)
72 {
73 AsyncableData<T> data;
74
75 T act1 = static_cast<T>(1);
76 data.SetData(act1);
77 CHECK_EQ(data.GetData(), act1);
78
79 T act2 = static_cast<T>(5);
80 data.SetData(act2);
81 CHECK_EQ(data.GetData(), act2);
82 }
83}
84
85#endif // DESIGNLAB_ASYNCABLE_DATA_TEST_H_
TEST_SUITE("AsyncableData")
非同期処理を行う際に,データの更新回数とデータをまとめて扱うためのクラス.