File: array_slice.rs

package info (click to toggle)
rust-magnus 0.7.1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,468 kB
  • sloc: ruby: 150; sh: 17; makefile: 2
file content (26 lines) | stat: -rw-r--r-- 855 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
use magnus::RArray;

#[test]
fn can_get_slice_from_r_attay() {
    let ruby = unsafe { magnus::embed::init() };

    let ary: RArray = ruby.eval(r#"[1, nil, "foo"]"#).unwrap();
    let slice = unsafe { ary.as_slice() };

    assert_eq!(3, slice.len());
    assert_eq!("1", format!("{:?}", slice[0]));
    assert_eq!("nil", format!("{:?}", slice[1]));
    assert_eq!(r#""foo""#, format!("{:?}", slice[2]));

    let ary: RArray = ruby
        .eval(r#"["bar", "baz", 42, [1, 2, 3], :test]"#)
        .unwrap();
    let slice = unsafe { ary.as_slice() };

    assert_eq!(5, slice.len());
    assert_eq!(r#""bar""#, format!("{:?}", slice[0]));
    assert_eq!(r#""baz""#, format!("{:?}", slice[1]));
    assert_eq!("42", format!("{:?}", slice[2]));
    assert_eq!("[1, 2, 3]", format!("{:?}", slice[3]));
    assert_eq!(":test", format!("{:?}", slice[4]));
}