From c35c97f6d976fc51344823e69b0af6893cdb7391 Mon Sep 17 00:00:00 2001 From: Chengxu Bian Date: Mon, 5 Feb 2024 20:46:18 +0000 Subject: [PATCH 1/2] add unit tests --- crates/iceberg/src/spec/table_metadata.rs | 42 +++++++++++++++++++++-- 1 file changed, 39 insertions(+), 3 deletions(-) diff --git a/crates/iceberg/src/spec/table_metadata.rs b/crates/iceberg/src/spec/table_metadata.rs index 7fc3ee0bb..141106298 100644 --- a/crates/iceberg/src/spec/table_metadata.rs +++ b/crates/iceberg/src/spec/table_metadata.rs @@ -183,7 +183,7 @@ impl TableMetadata { self.partition_spec_by_id(DEFAULT_SPEC_ID) } else { Some( - self.partition_spec_by_id(DEFAULT_SPEC_ID) + self.partition_spec_by_id(self.default_spec_id) .expect("Default partition spec id set, but not found in table metadata"), ) } @@ -856,6 +856,13 @@ mod tests { assert_eq!(parsed_json_value, desered_type); } + fn get_test_table_metadata(file_name: &str) -> TableMetadata { + let path = format!("testdata/table_metadata/{}", file_name); + let metadata: String = fs::read_to_string(path).unwrap(); + + serde_json::from_str(&metadata).unwrap() + } + #[test] fn test_table_data_v2() { let data = r#" @@ -1516,7 +1523,7 @@ mod tests { #[test] fn test_table_metadata_v2_unsupported_version() { - let metadata = + let metadata: String = fs::read_to_string("testdata/table_metadata/TableMetadataUnsupportedVersion.json") .unwrap(); @@ -1529,9 +1536,38 @@ mod tests { } #[test] - fn order_of_format_version() { + fn test_order_of_format_version() { assert!(FormatVersion::V1 < FormatVersion::V2); assert_eq!(FormatVersion::V1, FormatVersion::V1); assert_eq!(FormatVersion::V2, FormatVersion::V2); } + + #[test] + fn test_default_partition_spec() { + let default_spec_id = 1234; + let mut table_meta_data = get_test_table_metadata("TableMetadataV2Valid.json"); + table_meta_data.default_spec_id = default_spec_id; + table_meta_data + .partition_specs + .insert(default_spec_id, Arc::new(PartitionSpec::default())); + + assert_eq!( + table_meta_data.default_partition_spec(), + table_meta_data.partition_spec_by_id(default_spec_id) + ); + } + #[test] + fn test_default_sort_order() { + let default_sort_order_id = 1234; + let mut table_meta_data = get_test_table_metadata("TableMetadataV2Valid.json"); + table_meta_data.default_sort_order_id = default_sort_order_id; + table_meta_data + .sort_orders + .insert(default_sort_order_id, Arc::new(SortOrder::default())); + + assert_eq!( + table_meta_data.default_sort_order(), + table_meta_data.sort_orders.get(&default_sort_order_id) + ) + } } From d19e5cfcf098633a1fe94f37d924273914d6e3c9 Mon Sep 17 00:00:00 2001 From: Chengxu Bian Date: Mon, 5 Feb 2024 20:49:59 +0000 Subject: [PATCH 2/2] fix type --- crates/iceberg/src/spec/table_metadata.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/iceberg/src/spec/table_metadata.rs b/crates/iceberg/src/spec/table_metadata.rs index 141106298..18e9ce82d 100644 --- a/crates/iceberg/src/spec/table_metadata.rs +++ b/crates/iceberg/src/spec/table_metadata.rs @@ -1523,7 +1523,7 @@ mod tests { #[test] fn test_table_metadata_v2_unsupported_version() { - let metadata: String = + let metadata = fs::read_to_string("testdata/table_metadata/TableMetadataUnsupportedVersion.json") .unwrap();