Sha256: 997d406176c99a34bddb2865506e627c0ef2f7da68e233e9048706a5b962186a

Contents?: true

Size: 1.03 KB

Versions: 19

Compression:

Stored size: 1.03 KB

Contents

use magnus::{
    block::{block_given, Yield},
    define_global_function, method, Value,
};

macro_rules! rb_assert {
    ($s:literal) => {
        assert!(magnus::eval::<bool>($s).unwrap())
    };
    ($s:literal, $($rest:tt)*) => {
        let result: bool = magnus::eval!($s, $($rest)*).unwrap();
        assert!(result)
    };
}

fn count_to_3(rb_self: Value) -> Yield<impl Iterator<Item = u8>> {
    if block_given() {
        Yield::Iter((1..=3).into_iter())
    } else {
        Yield::Enumerator(rb_self.enumeratorize("count_to_3", ()))
    }
}

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

    define_global_function("count_to_3", method!(count_to_3, 0));

    rb_assert!(
        "
    a = []
    count_to_3 do |i|
      a << i
    end
    a == [1,2,3]
    "
    );

    rb_assert!(
        "
    def raises
      yield
      false
    rescue StopIteration
      true
    end
    enum = count_to_3
    enum.next == 1 && enum.next == 2 && enum.next == 3 && raises { enum.next }
    "
    );
}

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
wasmtime-14.0.4 ./ext/cargo-vendor/magnus-0.5.5/tests/return_iter.rs
wasmtime-14.0.3 ./ext/cargo-vendor/magnus-0.5.5/tests/return_iter.rs
wasmtime-14.0.1 ./ext/cargo-vendor/magnus-0.5.5/tests/return_iter.rs
wasmtime-14.0.0 ./ext/cargo-vendor/magnus-0.5.5/tests/return_iter.rs
wasmtime-13.0.0 ./ext/cargo-vendor/magnus-0.5.5/tests/return_iter.rs
wasmtime-12.0.1 ./ext/cargo-vendor/magnus-0.5.5/tests/return_iter.rs
wasmtime-12.0.0 ./ext/cargo-vendor/magnus-0.5.5/tests/return_iter.rs
wasmtime-11.0.0 ./ext/cargo-vendor/magnus-0.5.5/tests/return_iter.rs
wasmtime-10.0.1 ./ext/cargo-vendor/magnus-0.5.5/tests/return_iter.rs
wasmtime-10.0.0 ./ext/cargo-vendor/magnus-0.5.5/tests/return_iter.rs
wasmtime-9.0.4 ./ext/cargo-vendor/magnus-0.5.5/tests/return_iter.rs
wasmtime-9.0.1 ./ext/cargo-vendor/magnus-0.5.3/tests/return_iter.rs
wasmtime-8.0.0 ./ext/cargo-vendor/magnus-0.5.3/tests/return_iter.rs
wasmtime-7.0.0 ./ext/cargo-vendor/magnus-0.5.2/tests/return_iter.rs
wasmtime-6.0.1 ./ext/cargo-vendor/magnus-0.5.1/tests/return_iter.rs
wasmtime-6.0.0 ./ext/cargo-vendor/magnus-0.5.1/tests/return_iter.rs
wasmtime-5.0.0 ./ext/cargo-vendor/magnus-0.4.4/tests/return_iter.rs
wasmtime-0.4.1 ./ext/cargo-vendor/magnus-0.4.4/tests/return_iter.rs
wasmtime-0.4.0 ./ext/cargo-vendor/magnus-0.4.3/tests/return_iter.rs