blob: e84e485fcdb7923067f4cb7e46dd4fe4f4b7f44b [file] [log] [blame]
{{#if isOptional}}
{{! This just means we expect a non-nil value. Go ahead and check the value,
stripping the optionality off. }}
{{>check_test_value actual=actual expected=expected cluster=cluster isOptional=false}}
{{else if isNullable}}
{{#if (isLiteralNull expected)}}
VerifyOrReturn(CheckValueNull("{{label}}", {{actual}}));
{{else}}
{{#if (chip_tests_variables_has expected)}}
{{! Expected value is also a nullable. }}
if ({{expected}} == nil) {
VerifyOrReturn(CheckValueNull("{{label}}", {{actual}}));
} else {
{{/if}}
VerifyOrReturn(CheckValueNonNull("{{label}}", {{actual}}));
{{>check_test_value actual=actual expected=expected cluster=cluster isNullable=false}}
{{#if (chip_tests_variables_has expected)}}
}
{{/if}}
{{/if}}
{{else if isArray}}
VerifyOrReturn(CheckValue("{{label}}", [{{actual}} count], static_cast<uint32_t>({{expected.length}})));
{{#each expected}}
{{>check_test_value actual=(concat ../actual "[" @index "]") expected=this cluster=../cluster isArray=false type=../type parent=../parent}}
{{/each}}
{{else}}
{{#if_is_struct type}}
{{! Iterate over the actual types in the struct, so we pick up the right
type/optionality/nullability information for them for our recursive
call. }}
{{#zcl_struct_items_by_struct_name type}}
{{#if (hasProperty ../expected label)}}
{{>check_test_value actual=(concat "((MTR" (asUpperCamelCase ../cluster) "Cluster" (asUpperCamelCase ../type) " *)" ../actual ")." (asStructPropertyName label)) expected=(lookup ../expected label) cluster=../cluster}}
{{/if}}
{{/zcl_struct_items_by_struct_name}}
{{! Maybe we should add a check for properties in the expected object (other
than "global") that are not present in the struct ? }}
{{else}}
VerifyOrReturn(CheckValue{{#if (isString type)}}AsString{{/if}}("{{label}}", {{actual}},
{{~#if (chip_tests_variables_has expected)}}{{expected}}
{{~else if (chip_tests_config_has expected)}}
m{{asUpperCamelCase expected}}.HasValue() ?
{{#if (isCharString type)}}
[[NSString alloc] initWithBytes:m{{asUpperCamelCase expected}}.Value().data() length:m{{asUpperCamelCase expected}}.Value().size() encoding:NSUTF8StringEncoding] : @"{{chip_tests_config_get_default_value expected}}"
{{else if (isOctetString type)}}
[NSData dataWithBytes:m{{asUpperCamelCase expected}}.Value().data() length:m{{asUpperCamelCase expected}}.Value().size()] : {{> octetStringValue value=(chip_tests_config_get_default_value expected)}}
{{else}}
m{{asUpperCamelCase expected}}.Value() : {{asTypedExpressionFromObjectiveC (chip_tests_config_get_default_value expected) type}}
{{/if}}
{{~else if (isOctetString type)}}
{{> octetStringValue value=expected}}
{{~else if (isCharString type)}}@"{{expected}}"
{{~else}}{{asTypedExpressionFromObjectiveC expected type}}
{{~/if}}));
{{/if_is_struct}}
{{/if}}