| 101 | } |
| 102 | |
| 103 | TEST_F(ListKeysStepTest, MapPartiallyUnknown) { |
| 104 | ExecutionPath path; |
| 105 | auto result = CreateIdentStep("var", 0); |
| 106 | ASSERT_OK(result); |
| 107 | path.push_back(*std::move(result)); |
| 108 | ComprehensionInitStep* init_step = new ComprehensionInitStep(1); |
| 109 | init_step->set_error_jump_offset(1); |
| 110 | path.push_back(absl::WrapUnique(init_step)); |
| 111 | path.push_back(std::make_unique<GetListKeysResultStep>()); |
| 112 | |
| 113 | auto expression = |
| 114 | MakeExpression(std::move(path), /*unknown_attributes=*/true); |
| 115 | |
| 116 | Activation activation; |
| 117 | Arena arena; |
| 118 | Struct value; |
| 119 | (*value.mutable_fields())["key1"].set_number_value(1.0); |
| 120 | (*value.mutable_fields())["key2"].set_number_value(2.0); |
| 121 | (*value.mutable_fields())["key3"].set_number_value(3.0); |
| 122 | |
| 123 | activation.InsertValue("var", CelProtoWrapper::CreateMessage(&value, &arena)); |
| 124 | activation.set_unknown_attribute_patterns({CelAttributePattern( |
| 125 | "var", |
| 126 | {CreateCelAttributeQualifierPattern(CelValue::CreateStringView("key2")), |
| 127 | CreateCelAttributeQualifierPattern(CelValue::CreateStringView("foo")), |
| 128 | CelAttributeQualifierPattern::CreateWildcard()})}); |
| 129 | |
| 130 | auto eval_result = expression->Evaluate(activation, &arena); |
| 131 | |
| 132 | ASSERT_OK(eval_result); |
| 133 | ASSERT_TRUE(eval_result->IsUnknownSet()); |
| 134 | const auto& attrs = eval_result->UnknownSetOrDie()->unknown_attributes(); |
| 135 | |
| 136 | EXPECT_THAT(attrs, SizeIs(1)); |
| 137 | EXPECT_THAT(attrs.begin()->variable_name(), Eq("var")); |
| 138 | EXPECT_THAT(attrs.begin()->qualifier_path(), SizeIs(0)); |
| 139 | } |
| 140 | |
| 141 | TEST_F(ListKeysStepTest, ErrorPassedThrough) { |
| 142 | ExecutionPath path; |
nothing calls this directly
no test coverage detected