Skip to content

Commit e217bee

Browse files
committed
Split test_set_or_list_errors into 3 tests
I want to perform set and list tests for more containers, splitting helps with that. Shorter tests are also better in general, and we can make them shorter here because they don't use Scylla.
1 parent a44d99d commit e217bee

File tree

1 file changed

+75
-77
lines changed

1 file changed

+75
-77
lines changed

scylla-cql/src/deserialize/value_tests.rs

Lines changed: 75 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -1933,108 +1933,106 @@ fn test_secrecy_08_errors() {
19331933
}
19341934

19351935
#[test]
1936-
fn test_set_or_list_errors() {
1937-
// Not a set or list
1938-
{
1939-
assert_type_check_error!(
1940-
&Bytes::new(),
1941-
Vec<i64>,
1942-
ColumnType::Native(NativeType::Float),
1943-
BuiltinTypeCheckErrorKind::NotDeserializableToVec
1944-
);
1936+
fn test_set_or_list_general_type_errors() {
1937+
assert_type_check_error!(
1938+
&Bytes::new(),
1939+
Vec<i64>,
1940+
ColumnType::Native(NativeType::Float),
1941+
BuiltinTypeCheckErrorKind::NotDeserializableToVec
1942+
);
19451943

1946-
// Type check of Rust set against CQL list must fail, because it would be lossy.
1947-
assert_type_check_error!(
1948-
&Bytes::new(),
1949-
BTreeSet<i32>,
1950-
ColumnType::Collection {
1951-
frozen: false,
1952-
typ: CollectionType::List(Box::new(ColumnType::Native(NativeType::Int))),
1953-
},
1954-
BuiltinTypeCheckErrorKind::SetOrListError(SetOrListTypeCheckErrorKind::NotSet)
1955-
);
1956-
}
1944+
// Type check of Rust set against CQL list must fail, because it would be lossy.
1945+
assert_type_check_error!(
1946+
&Bytes::new(),
1947+
BTreeSet<i32>,
1948+
ColumnType::Collection {
1949+
frozen: false,
1950+
typ: CollectionType::List(Box::new(ColumnType::Native(NativeType::Int))),
1951+
},
1952+
BuiltinTypeCheckErrorKind::SetOrListError(SetOrListTypeCheckErrorKind::NotSet)
1953+
);
1954+
}
1955+
1956+
#[test]
1957+
fn test_set_or_list_elem_type_errors() {
1958+
let err = deserialize::<Vec<i64>>(
1959+
&ColumnType::Collection {
1960+
frozen: false,
1961+
typ: CollectionType::List(Box::new(ColumnType::Native(NativeType::Varint))),
1962+
},
1963+
&Bytes::new(),
1964+
)
1965+
.unwrap_err();
1966+
let err = get_typeck_err(&err);
1967+
assert_eq!(err.rust_name, std::any::type_name::<Vec<i64>>());
1968+
assert_eq!(
1969+
err.cql_type,
1970+
ColumnType::Collection {
1971+
frozen: false,
1972+
typ: CollectionType::List(Box::new(ColumnType::Native(NativeType::Varint))),
1973+
},
1974+
);
1975+
let BuiltinTypeCheckErrorKind::SetOrListError(
1976+
SetOrListTypeCheckErrorKind::ElementTypeCheckFailed(ref err),
1977+
) = err.kind
1978+
else {
1979+
panic!("unexpected error kind: {}", err.kind)
1980+
};
1981+
let err = get_typeck_err_inner(err.0.as_ref());
1982+
assert_eq!(err.rust_name, std::any::type_name::<i64>());
1983+
assert_eq!(err.cql_type, ColumnType::Native(NativeType::Varint));
1984+
assert_matches!(
1985+
err.kind,
1986+
BuiltinTypeCheckErrorKind::MismatchedType {
1987+
expected: &[ColumnType::Native(NativeType::BigInt)]
1988+
}
1989+
);
1990+
}
1991+
1992+
#[test]
1993+
fn test_set_or_list_elem_deser_errors() {
1994+
let ser_typ = ColumnType::Collection {
1995+
frozen: false,
1996+
typ: CollectionType::List(Box::new(ColumnType::Native(NativeType::Int))),
1997+
};
1998+
let v = vec![123_i32];
1999+
let bytes = serialize(&ser_typ, &v);
19572000

1958-
// Bad element type
19592001
{
19602002
let err = deserialize::<Vec<i64>>(
19612003
&ColumnType::Collection {
19622004
frozen: false,
1963-
typ: CollectionType::List(Box::new(ColumnType::Native(NativeType::Varint))),
2005+
typ: CollectionType::List(Box::new(ColumnType::Native(NativeType::BigInt))),
19642006
},
1965-
&Bytes::new(),
2007+
&bytes,
19662008
)
19672009
.unwrap_err();
1968-
let err = get_typeck_err(&err);
2010+
let err = get_deser_err(&err);
19692011
assert_eq!(err.rust_name, std::any::type_name::<Vec<i64>>());
19702012
assert_eq!(
19712013
err.cql_type,
19722014
ColumnType::Collection {
19732015
frozen: false,
1974-
typ: CollectionType::List(Box::new(ColumnType::Native(NativeType::Varint))),
2016+
typ: CollectionType::List(Box::new(ColumnType::Native(NativeType::BigInt))),
19752017
},
19762018
);
1977-
let BuiltinTypeCheckErrorKind::SetOrListError(
1978-
SetOrListTypeCheckErrorKind::ElementTypeCheckFailed(ref err),
1979-
) = err.kind
2019+
let BuiltinDeserializationErrorKind::SetOrListError(
2020+
SetOrListDeserializationErrorKind::ElementDeserializationFailed(err),
2021+
) = &err.kind
19802022
else {
19812023
panic!("unexpected error kind: {}", err.kind)
19822024
};
1983-
let err = get_typeck_err_inner(err.0.as_ref());
2025+
let err = get_deser_err(err);
19842026
assert_eq!(err.rust_name, std::any::type_name::<i64>());
1985-
assert_eq!(err.cql_type, ColumnType::Native(NativeType::Varint));
2027+
assert_eq!(err.cql_type, ColumnType::Native(NativeType::BigInt));
19862028
assert_matches!(
19872029
err.kind,
1988-
BuiltinTypeCheckErrorKind::MismatchedType {
1989-
expected: &[ColumnType::Native(NativeType::BigInt)]
2030+
BuiltinDeserializationErrorKind::ByteLengthMismatch {
2031+
expected: 8,
2032+
got: 4
19902033
}
19912034
);
19922035
}
1993-
1994-
{
1995-
let ser_typ = ColumnType::Collection {
1996-
frozen: false,
1997-
typ: CollectionType::List(Box::new(ColumnType::Native(NativeType::Int))),
1998-
};
1999-
let v = vec![123_i32];
2000-
let bytes = serialize(&ser_typ, &v);
2001-
2002-
{
2003-
let err = deserialize::<Vec<i64>>(
2004-
&ColumnType::Collection {
2005-
frozen: false,
2006-
typ: CollectionType::List(Box::new(ColumnType::Native(NativeType::BigInt))),
2007-
},
2008-
&bytes,
2009-
)
2010-
.unwrap_err();
2011-
let err = get_deser_err(&err);
2012-
assert_eq!(err.rust_name, std::any::type_name::<Vec<i64>>());
2013-
assert_eq!(
2014-
err.cql_type,
2015-
ColumnType::Collection {
2016-
frozen: false,
2017-
typ: CollectionType::List(Box::new(ColumnType::Native(NativeType::BigInt))),
2018-
},
2019-
);
2020-
let BuiltinDeserializationErrorKind::SetOrListError(
2021-
SetOrListDeserializationErrorKind::ElementDeserializationFailed(err),
2022-
) = &err.kind
2023-
else {
2024-
panic!("unexpected error kind: {}", err.kind)
2025-
};
2026-
let err = get_deser_err(err);
2027-
assert_eq!(err.rust_name, std::any::type_name::<i64>());
2028-
assert_eq!(err.cql_type, ColumnType::Native(NativeType::BigInt));
2029-
assert_matches!(
2030-
err.kind,
2031-
BuiltinDeserializationErrorKind::ByteLengthMismatch {
2032-
expected: 8,
2033-
got: 4
2034-
}
2035-
);
2036-
}
2037-
}
20382036
}
20392037

20402038
#[test]

0 commit comments

Comments
 (0)