Skip to content

Commit

Permalink
add tests for type/sortkey mismatch
Browse files Browse the repository at this point in the history
  • Loading branch information
Lance Hepler committed Oct 31, 2019
1 parent 8514553 commit 17d3af9
Showing 1 changed file with 90 additions and 0 deletions.
90 changes: 90 additions & 0 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1860,6 +1860,96 @@ mod shard_tests {
}

assert!(got_err);
tmp.close()?;

Ok(())
}

#[derive(Copy, Clone, Serialize, Deserialize, Debug)]
struct T2(u16);

#[derive(Copy, Clone, Serialize, Deserialize, Debug)]
struct T3(u16);

struct S2 {}
struct S3 {}

impl SortKey<T2> for S2 {
type Key = u16;
fn sort_key(v: &T2) -> Cow<u16> {
Cow::Owned(v.0)
}
}

impl SortKey<T3> for S2 {
type Key = u16;
fn sort_key(v: &T3) -> Cow<u16> {
Cow::Owned(v.0)
}
}

impl SortKey<T2> for S3 {
type Key = u16;
fn sort_key(v: &T2) -> Cow<u16> {
Cow::Owned(v.0)
}
}

#[test]
fn test_ttyp_error() -> Result<(), Error> {
let disk_chunk_size = 1 << 20;
let producer_chunk_size = 1 << 4;
let buffer_size = 1 << 16;

let tmp = tempfile::NamedTempFile::new()?;

{
let manager: ShardWriter<T2, S2> = ShardWriter::new(
tmp.path(),
producer_chunk_size,
disk_chunk_size,
buffer_size,
)?;
let mut sender = manager.get_sender();
sender.send(T2(0))?;
}
{
let reader = ShardReader::<T3, S2>::open(tmp.path());
assert!(reader.is_err());
if let Err(err) = reader {
println!("{}", err);
}
}
tmp.close()?;
Ok(())
}

#[test]
fn test_styp_error() -> Result<(), Error> {
let disk_chunk_size = 1 << 20;
let producer_chunk_size = 1 << 4;
let buffer_size = 1 << 16;

let tmp = tempfile::NamedTempFile::new()?;

{
let manager: ShardWriter<T2, S2> = ShardWriter::new(
tmp.path(),
producer_chunk_size,
disk_chunk_size,
buffer_size,
)?;
let mut sender = manager.get_sender();
sender.send(T2(0))?;
}
{
let reader = ShardReader::<T2, S3>::open(tmp.path());
assert!(reader.is_err());
if let Err(err) = reader {
println!("{}", err);
}
}
tmp.close()?;
Ok(())
}
}

0 comments on commit 17d3af9

Please sign in to comment.