()
| 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() |
nothing calls this directly
no test coverage detected