@@ -54,8 +54,8 @@ struct TestExternalContextPayloadData {
54
54
55
55
TF_LITE_MICRO_TESTS_BEGIN
56
56
57
- // Ensures that a regular set and get pair works ok.
58
- TF_LITE_MICRO_TEST (TestSetGetExternalContextSuccess ) {
57
+ // Ensures that a regular set and get pair works ok during state kInvoke .
58
+ TF_LITE_MICRO_TEST (TestSetGetExternalContextSuccessInvoke ) {
59
59
tflite::MicroInterpreterContext micro_context =
60
60
tflite::CreateMicroInterpreterContext ();
61
61
micro_context.SetInterpreterState (
@@ -70,19 +70,36 @@ TF_LITE_MICRO_TEST(TestSetGetExternalContextSuccess) {
70
70
micro_context.external_context ());
71
71
72
72
// What is returned should be the same as what is set.
73
- TF_LITE_MICRO_EXPECT (( void *) returned_external_context == ( void *)( &payload) );
73
+ TF_LITE_MICRO_EXPECT (returned_external_context == &payload);
74
74
}
75
75
76
- TF_LITE_MICRO_TEST (TestGetExternalContextWithoutSetShouldReturnNull) {
76
+ // Ensures that a regular set and get pair works ok during state kInit.
77
+ TF_LITE_MICRO_TEST (TestSetGetExternalContextSuccessInit) {
77
78
tflite::MicroInterpreterContext micro_context =
78
79
tflite::CreateMicroInterpreterContext ();
80
+ micro_context.SetInterpreterState (
81
+ tflite::MicroInterpreterContext::InterpreterState::kInit );
82
+
83
+ tflite::TestExternalContextPayloadData payload;
84
+ TF_LITE_MICRO_EXPECT_EQ (kTfLiteOk ,
85
+ micro_context.set_external_context (&payload));
79
86
80
87
tflite::TestExternalContextPayloadData* returned_external_context =
81
88
reinterpret_cast <tflite::TestExternalContextPayloadData*>(
82
89
micro_context.external_context ());
83
90
91
+ // What is returned should be the same as what is set.
92
+ TF_LITE_MICRO_EXPECT (returned_external_context == &payload);
93
+ }
94
+
95
+ TF_LITE_MICRO_TEST (TestGetExternalContextWithoutSetShouldReturnNull) {
96
+ tflite::MicroInterpreterContext micro_context =
97
+ tflite::CreateMicroInterpreterContext ();
98
+
99
+ void * returned_external_context = micro_context.external_context ();
100
+
84
101
// Return a null if nothing is set before.
85
- TF_LITE_MICRO_EXPECT (( void *) returned_external_context == ( nullptr ) );
102
+ TF_LITE_MICRO_EXPECT (returned_external_context == nullptr );
86
103
}
87
104
88
105
TF_LITE_MICRO_TEST (TestSetExternalContextCanOnlyBeCalledOnce) {
@@ -98,6 +115,15 @@ TF_LITE_MICRO_TEST(TestSetExternalContextCanOnlyBeCalledOnce) {
98
115
// Another set should fail.
99
116
TF_LITE_MICRO_EXPECT_EQ (kTfLiteError ,
100
117
micro_context.set_external_context (&payload));
118
+
119
+ // Null set should fail.
120
+ TF_LITE_MICRO_EXPECT_EQ (kTfLiteError ,
121
+ micro_context.set_external_context (nullptr ));
122
+ tflite::TestExternalContextPayloadData* returned_external_context =
123
+ reinterpret_cast <tflite::TestExternalContextPayloadData*>(
124
+ micro_context.external_context ());
125
+ // Payload should be unchanged.
126
+ TF_LITE_MICRO_EXPECT (&payload == returned_external_context);
101
127
}
102
128
103
129
TF_LITE_MICRO_TEST (TestSetExternalContextToNullShouldFail) {
0 commit comments