()
| 527 | |
| 528 | #[test] |
| 529 | fn encode_bitemporal_roundtrip() { |
| 530 | let schema = StrictSchema::new_bitemporal(vec![ |
| 531 | ColumnDef::required("id", ColumnType::Int64).with_primary_key(), |
| 532 | ColumnDef::nullable("name", ColumnType::String), |
| 533 | ]) |
| 534 | .unwrap(); |
| 535 | assert!(schema.bitemporal); |
| 536 | assert_eq!(schema.columns[0].name, "__system_from_ms"); |
| 537 | assert_eq!(schema.columns[1].name, "__valid_from_ms"); |
| 538 | assert_eq!(schema.columns[2].name, "__valid_until_ms"); |
| 539 | assert_eq!(schema.columns[3].name, "id"); |
| 540 | |
| 541 | let encoder = TupleEncoder::new(&schema); |
| 542 | let tuple = encoder |
| 543 | .encode_bitemporal( |
| 544 | 100, |
| 545 | 200, |
| 546 | i64::MAX, |
| 547 | &[Value::Integer(42), Value::String("alice".into())], |
| 548 | ) |
| 549 | .unwrap(); |
| 550 | |
| 551 | let decoder = crate::decode::TupleDecoder::new(&schema); |
| 552 | let (sys, vf, vu) = decoder.extract_bitemporal_timestamps(&tuple).unwrap(); |
| 553 | assert_eq!((sys, vf, vu), (100, 200, i64::MAX)); |
| 554 | assert_eq!( |
| 555 | decoder.extract_by_name(&tuple, "id").unwrap(), |
| 556 | Value::Integer(42) |
| 557 | ); |
| 558 | assert_eq!( |
| 559 | decoder.extract_by_name(&tuple, "name").unwrap(), |
| 560 | Value::String("alice".into()) |
| 561 | ); |
| 562 | } |
| 563 | |
| 564 | #[test] |
| 565 | fn reserved_column_name_rejected() { |
nothing calls this directly
no test coverage detected