()
| 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())); |
no test coverage detected