Files
cell/tests/shop_audit.cm
2026-02-14 14:00:27 -06:00

86 lines
2.8 KiB
Plaintext

// Shop system audit tests
// Tests module resolution, caching, and runtime paths
// accessible from user code via use()
var json = use('json')
var runtime = use('runtime')
var time_mod = use('time')
return {
// ========================================================================
// MODULE RESOLUTION
// ========================================================================
test_use_core_module: function() {
if (!is_object(json)) return "use('json') should return an object"
if (!is_function(json.encode)) return "json should have encode function"
if (!is_function(json.decode)) return "json should have decode function"
},
test_use_returns_cached: function() {
var json2 = use('json')
if (json != json2) return "two use('json') calls should return same reference"
},
test_use_time_module: function() {
if (!is_object(time_mod)) return "use('time') should return an object"
},
test_use_nonexistent_disrupts: function() {
var caught = false
var _fn = function() {
var x = use('nonexistent_xyz_99')
} disruption {
caught = true
}
_fn()
if (!caught) return "use('nonexistent_xyz_99') should disrupt"
},
// ========================================================================
// RUNTIME PATHS
// ========================================================================
test_runtime_shop_path: function() {
if (is_null(runtime.shop_path)) return "runtime.shop_path should not be null"
if (!is_text(runtime.shop_path)) return "runtime.shop_path should be text"
},
test_runtime_core_path: function() {
if (is_null(runtime.core_path)) return "runtime.core_path should not be null"
if (!is_text(runtime.core_path)) return "runtime.core_path should be text"
},
test_runtime_is_frozen: function() {
if (!is_stone(runtime)) return "runtime should be frozen (stoned)"
},
// ========================================================================
// MODULE CACHING BEHAVIOR
// ========================================================================
test_json_encode_decode_roundtrip: function() {
var obj = {a: 1, b: "hello", c: [1, 2, 3]}
var encoded = json.encode(obj)
var decoded = json.decode(encoded)
if (decoded.a != 1) return "roundtrip failed for number"
if (decoded.b != "hello") return "roundtrip failed for text"
if (length(decoded.c) != 3) return "roundtrip failed for array"
},
test_use_blob_module: function() {
var b = use('blob')
if (!is_object(b)) return "use('blob') should return an object"
},
test_use_math_module: function() {
var m = use('math')
if (!is_object(m)) return "use('math') should return an object"
},
test_use_random_module: function() {
var r = use('random')
if (!is_object(r)) return "use('random') should return an object"
}
}