MCPcopy Create free account
hub / github.com/cel-rust/cel-rust / test_optional

Function test_optional

cel/src/objects.rs:2213–2611  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

2211
2212 #[test]
2213 fn test_optional() {
2214 let expr = Parser::default()
2215 .enable_optional_syntax(true)
2216 .parse("optional.none()")
2217 .expect("Must parse");
2218 assert_eq!(
2219 Value::resolve(&expr, &Context::default()),
2220 Ok(Value::Opaque(Arc::new(OptionalValue::none())))
2221 );
2222
2223 let expr = Parser::default()
2224 .enable_optional_syntax(true)
2225 .parse("optional.of(1)")
2226 .expect("Must parse");
2227 assert_eq!(
2228 Value::resolve(&expr, &Context::default()),
2229 Ok(Value::Opaque(Arc::new(OptionalValue::of(Value::Int(1)))))
2230 );
2231
2232 let expr = Parser::default()
2233 .enable_optional_syntax(true)
2234 .parse("optional.ofNonZeroValue(0)")
2235 .expect("Must parse");
2236 assert_eq!(
2237 Value::resolve(&expr, &Context::default()),
2238 Ok(Value::Opaque(Arc::new(OptionalValue::none())))
2239 );
2240
2241 let expr = Parser::default()
2242 .enable_optional_syntax(true)
2243 .parse("optional.ofNonZeroValue(1)")
2244 .expect("Must parse");
2245 assert_eq!(
2246 Value::resolve(&expr, &Context::default()),
2247 Ok(Value::Opaque(Arc::new(OptionalValue::of(Value::Int(1)))))
2248 );
2249
2250 let expr = Parser::default()
2251 .enable_optional_syntax(true)
2252 .parse("optional.of(1).value()")
2253 .expect("Must parse");
2254 assert_eq!(
2255 Value::resolve(&expr, &Context::default()),
2256 Ok(Value::Int(1))
2257 );
2258 let expr = Parser::default()
2259 .enable_optional_syntax(true)
2260 .parse("optional.none().value()")
2261 .expect("Must parse");
2262 assert_eq!(
2263 Value::resolve(&expr, &Context::default()),
2264 Err(ExecutionError::FunctionError {
2265 function: "value".to_string(),
2266 message: "optional.none() dereference".to_string()
2267 })
2268 );
2269
2270 let expr = Parser::default()

Callers

nothing calls this directly

Calls 4

IntClass · 0.85
parseMethod · 0.80

Tested by

no test coverage detected