extendable-assets 0.1.0

Asset framework for graphics and games
Documentation
mod common;
use common::*;

use std::sync::Weak;

use extendable_assets::*;

fn assert_asset_type_name(weak_asset_type: Weak<dyn AssetType>, expected_name: &str) {
    let asset_type = weak_asset_type.upgrade().unwrap();
    let name = asset_type.name();
    assert_eq!(name, expected_name);
}

#[test]
fn register_get_asset_type() {
    let mgr = init_mgr();
    register_types(&mgr);

    let asset_type_0 = mgr.asset_type_by_name("TestAsset").unwrap();
    let asset_type_1 = mgr.asset_type_by_name("TestContextAsset").unwrap();

    assert_asset_type_name(asset_type_0, "TestAsset");
    assert_asset_type_name(asset_type_1, "TestContextAsset");
}
#[test]
fn register_get_asset() {
    let mgr = init_mgr();
    register_types(&mgr);
    let asset_id = register_assets(&mgr);

    let asset = mgr.asset_by_id(asset_id).unwrap();
    assert_eq!(asset.id(), asset_id);
}

#[test]
fn read_and_register_asset() {
    let mut mgr = init_mgr();
    mgr.set_serialization_backend(Box::new(JsonAssetSerializationBackend));
    register_types(&mgr);

    let asset_id =
        pollster::block_on(mgr.fs_read_and_register_asset("test_data_0/asset.json")).unwrap();
    let asset = mgr.asset_by_id(asset_id).unwrap();
    let data = asset.data().downcast_ref::<TestStringAssetData>().unwrap();
    assert_eq!(data.value, "Hello asset");
}