Skip to content

Commit e122f90

Browse files
committed
More Either tests
1 parent c638d90 commit e122f90

File tree

1 file changed

+19
-2
lines changed

1 file changed

+19
-2
lines changed

tests/conversion.rs

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -474,6 +474,7 @@ fn test_either_enum() -> Result<()> {
474474
*either.as_mut().left().unwrap() = 44;
475475
assert_eq!(*either.as_ref().left().unwrap(), 44);
476476
assert_eq!(format!("{either}"), "44");
477+
assert_eq!(either.right(), None);
477478

478479
// Right
479480
either = Either::Right("hello".to_string());
@@ -482,6 +483,7 @@ fn test_either_enum() -> Result<()> {
482483
*either.as_mut().right().unwrap() = "world".to_string();
483484
assert_eq!(*either.as_ref().right().unwrap(), "world");
484485
assert_eq!(format!("{either}"), "world");
486+
assert_eq!(either.left(), None);
485487

486488
Ok(())
487489
}
@@ -492,8 +494,10 @@ fn test_either_into_lua() -> Result<()> {
492494

493495
// Direct conversion
494496
let mut either = Either::<i32, &Table>::Left(42);
495-
let value = either.into_lua(&lua)?;
496-
assert_eq!(value, Value::Integer(42));
497+
assert_eq!(either.into_lua(&lua)?, Value::Integer(42));
498+
let t = lua.create_table()?;
499+
either = Either::Right(&t);
500+
assert!(matches!(either.into_lua(&lua)?, Value::Table(_)));
497501

498502
// Push into stack
499503
let f =
@@ -514,6 +518,19 @@ fn test_either_into_lua() -> Result<()> {
514518
fn test_either_from_lua() -> Result<()> {
515519
let lua = Lua::new();
516520

521+
// From value
522+
let mut either = lua.unpack::<Either<i32, Table>>(Value::Integer(42))?;
523+
assert!(either.is_left());
524+
assert_eq!(*either.as_ref().left().unwrap(), 42);
525+
let t = lua.create_table()?;
526+
either = lua.unpack::<Either<i32, Table>>(Value::Table(t.clone()))?;
527+
assert!(either.is_right());
528+
assert_eq!(either.as_ref().right().unwrap(), &t);
529+
match lua.unpack::<Either<i32, Table>>(Value::String(lua.create_string("abc")?)) {
530+
Err(Error::FromLuaConversionError { to, .. }) => assert_eq!(to, "Either<i32, Table>"),
531+
_ => panic!("expected `Error::FromLuaConversionError`"),
532+
}
533+
517534
// From stack
518535
let f = lua.create_function(|_, either: Either<i32, Table>| Ok(either))?;
519536
let either = f.call::<Either<i32, Table>>(42)?;

0 commit comments

Comments
 (0)