MCPcopy Create free account
hub / github.com/apache/arrow-rs / test_case

Function test_case

arrow-array/src/ffi.rs:1900–1963  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

1898 #[test]
1899 fn test_round_trip_byte_view() {
1900 fn test_case<T>()
1901 where
1902 T: ByteViewType,
1903 T::Native: NativeFromStr,
1904 {
1905 macro_rules! run_test_case {
1906 ($array:expr) => {{
1907 // round-trip through C Data Interface
1908 let len = $array.len();
1909 let imported = roundtrip_byte_view_array($array);
1910 assert_eq!(imported.len(), len);
1911
1912 let copied = extend_array(&imported);
1913 assert_eq!(
1914 copied
1915 .as_any()
1916 .downcast_ref::<GenericByteViewArray<T>>()
1917 .unwrap(),
1918 &imported
1919 );
1920 }};
1921 }
1922
1923 // Empty test case.
1924 let empty = GenericByteViewBuilder::<T>::new().finish();
1925 run_test_case!(empty);
1926
1927 // All inlined strings test case.
1928 let mut all_inlined = GenericByteViewBuilder::<T>::new();
1929 all_inlined.append_value(T::Native::from_str("inlined1"));
1930 all_inlined.append_value(T::Native::from_str("inlined2"));
1931 all_inlined.append_value(T::Native::from_str("inlined3"));
1932 let all_inlined = all_inlined.finish();
1933 assert_eq!(all_inlined.data_buffers().len(), 0);
1934 run_test_case!(all_inlined);
1935
1936 // some inlined + non-inlined, 1 variadic buffer.
1937 let mixed_one_variadic = {
1938 let mut builder = GenericByteViewBuilder::<T>::new();
1939 builder.append_value(T::Native::from_str("inlined"));
1940 let block_id =
1941 builder.append_block(Buffer::from("non-inlined-string-buffer".as_bytes()));
1942 builder.try_append_view(block_id, 0, 25).unwrap();
1943 builder.finish()
1944 };
1945 assert_eq!(mixed_one_variadic.data_buffers().len(), 1);
1946 run_test_case!(mixed_one_variadic);
1947
1948 // inlined + non-inlined, 2 variadic buffers.
1949 let mixed_two_variadic = {
1950 let mut builder = GenericByteViewBuilder::<T>::new();
1951 builder.append_value(T::Native::from_str("inlined"));
1952 let block_id =
1953 builder.append_block(Buffer::from("non-inlined-string-buffer".as_bytes()));
1954 builder.try_append_view(block_id, 0, 25).unwrap();
1955
1956 let block_id = builder
1957 .append_block(Buffer::from("another-non-inlined-string-buffer".as_bytes()));

Calls 5

try_append_viewMethod · 0.80
finishMethod · 0.45
append_valueMethod · 0.45
append_blockMethod · 0.45
as_bytesMethod · 0.45

Tested by

no test coverage detected