use super::*;

#[test]
fn exact_parameter_and_grid_boundaries() {
    let message = [0xa5; 32];
    let bytes = parameters(
        &message,
        0x0807_0605_0403_0201,
        0x1817_1615_1413_1211,
        0x2423_2221,
    );
    assert_eq!(&bytes[..32], &message);
    assert_eq!(
        &bytes[32..],
        &[
            1, 2, 3, 4, 5, 6, 7, 8, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x21, 0x22,
            0x23, 0x24, 0, 0, 0, 0
        ]
    );
    for (count, k, expected) in [
        (0, 1, 0),
        (1, 2, 1),
        (3, 2, 2),
        (5, 4, 2),
        (u32::MAX, 1, 4_294_967_295),
        (u32::MAX, 2, 2_147_483_648),
        (u32::MAX, 4, 1_073_741_824),
    ] {
        assert_eq!(grid(count, k, 64, 64, (64, 1, 1)).unwrap(), expected);
    }
    for (width, pipeline, device) in [
        (0, 64, (64, 1, 1)),
        (65, 64, (64, 1, 1)),
        (64, 63, (64, 1, 1)),
        (64, 64, (63, 1, 1)),
        (64, 64, (64, 0, 1)),
        (64, 64, (64, 1, 0)),
    ] {
        assert!(grid(0, 1, width, pipeline, device).is_err());
    }
}

#[test]
fn completion_failures_close_output_but_keep_read_only_tables_available() {
    let gpu = Gpu::open().unwrap();
    let table = RTable::open(&gpu, 1).unwrap();
    for (status, detail) in [
        (0, None),
        (4, Some("native detail".to_owned())),
        (5, None),
        (5, Some("failed".to_owned())),
    ] {
        let mut owner = GpuMiner::open(&gpu, MineVariant::V1Single, &table, None).unwrap();
        owner.failed = true;
        assert!(owner.completed(status, detail).is_err());
        assert!(matches!(
            owner.run(&[0; 32], 0, 0, 1),
            Err(BenchError::Unavailable)
        ));
        assert_eq!(table.bytes().unwrap(), &[0; 32]);
    }
    let mut owner = GpuMiner::open(&gpu, MineVariant::V1Single, &table, None).unwrap();
    owner.failed = true;
    owner.completed(Commands::STATUS_COMPLETED, None).unwrap();
    assert_eq!(owner.run(&[0; 32], 0, 0, 1).unwrap(), [0; 32]);
    assert_eq!(owner.output.size(), 32);
    assert!(owner.output.is_shared());
}

Homonyms

warriors/trisha/rs/lower/tests.rs
cyb/honeycrisp/aruminium/src/tests.rs
soft3/radio/iroh-blobs/src/tests.rs
neural/trident/src/neural/tests.rs
soft3/lens/cli/src/tests.rs
neural/trident/src/deploy/tests.rs
neural/trident/src/package/registry/tests.rs
neural/trident/src/lsp/semantic/tests.rs
neural/trident/src/verify/sym/tests.rs
cyb/wysm/crates/wasmi/src/tests.rs
soft3/radio/cyber-bao/src/tree/tests.rs
neural/trident/src/verify/report/tests.rs
neural/trident/src/config/resolve/tests.rs
neural/trident/src/verify/solve/tests.rs
neural/trident/src/syntax/grammar/tests.rs
neural/trident/src/package/hash/tests.rs
neural/trident/src/lsp/util/tests.rs
neural/trident/src/config/scaffold/tests.rs
neural/trident/src/verify/synthesize/tests.rs
neural/trident/src/package/manifest/tests.rs
neural/trident/src/verify/equiv/tests.rs
neural/trident/src/verify/smt/tests.rs
soft3/radio/quinn/quinn-udp/tests/tests.rs
cyb/honeycrisp/aruminium/src/render/tests.rs
warriors/trisha/rs/lower/legalize/tests.rs
soft3/radio/quinn/quinn/src/tests.rs
cyb/wysm/crates/collections/src/tests.rs
cyb/honeycrisp/unimem/src/block/tests.rs
cyb/wysm/crates/cli/src/tests.rs
neural/trident/src/package/store/tests.rs
warriors/trisha/rs/cost/stack_verifier/tests.rs
soft3/radio/cyber-bao/src/group/tests.rs
neural/trident/src/syntax/lexer/tests.rs
neural/trident/src/syntax/format/tests.rs
cyb/wysm/crates/core/src/table/tests.rs
soft3/radio/quinn/quinn-proto/src/range_set/tests.rs
neural/trident/src/neural/data/tir_graph/tests.rs
cyb/wysm/crates/wasmi/src/instance/tests.rs
warriors/erga/rs/mine-bench/src/texture_ffi/tests.rs
warriors/erga/rs/blake-bench/src/batch/tests.rs
neural/trident/src/ir/tir/optimize/tests.rs
soft3/zheng/rs/src/ccs/universal/tests.rs
neural/trident/src/ir/tir/stack/tests.rs
warriors/erga/rs/rtable-bench/src/table/tests.rs
cyb/evy/forks/bevy_ecs/src/bundle/tests.rs
warriors/erga/rs/rtable-bench/src/probe/tests.rs
cyb/wysm/crates/core/src/memory/tests.rs
cyb/wysm/crates/wasmi/src/module/instantiate/tests.rs
cyb/wysm/crates/wasmi/src/engine/limits/tests.rs
cyb/evy/forks/naga/src/front/wgsl/tests.rs
warriors/erga/rs/mine-bench/src/cli/timed/tests.rs

Graph