mcode-data
Version:
Our Data Handling functions. These support type checking and type coercion and conversion of Objects--ints, string, number, JSON, any--to commonize data handling and type checking.
132 lines (111 loc) • 2.85 kB
JavaScript
// MicroCODE: define this module's name for logging
const MODULE_NAME = 'examples-property.js';
const data = require('./index.js');
console.log("\n\nREAD_WRITE TEST\n");
let myProperty = data.property({
initial: 7,
readonly: false,
immutable: false,
validator: function (value)
{
return typeof value === 'number';
},
onChange: function (oldValue, newValue)
{
console.log(`RW Property changed from ${oldValue} to ${newValue}`);
}
});
{
// test: get
console.log(`RW Property - should be 7: ${myProperty.get()}`);
// test: set
myProperty.set(10);
console.log(`RW Property - should be 10: ${myProperty.get()}`);
// test: illegal value
try
{
myProperty.set('test');
}
catch (error)
{
console.error(`Error: ${error.message}`);
}
console.log(`RW Property - should be 10: ${myProperty.get()}`);
}
console.log("\n\nREAD_ONLY TEST\n");
let myReadOnly = data.property({
initial: 17,
readonly: true,
immutable: false,
validator: function (value)
{
return typeof value === 'number';
},
onChange: function (oldValue, newValue)
{
console.log(`RO Property changed from ${oldValue} to ${newValue}`);
}
});
{
// test: get
console.log(`RO Property - should be 17: ${myReadOnly.get()}`);
// test: set
try
{
myReadOnly.set(10);
}
catch (error)
{
console.error(`Error: ${error.message}`);
}
console.log(`RO Property - should be 17: ${myReadOnly.get()}`);
// test: illegal value
try
{
myReadOnly.set('test');
}
catch (error)
{
console.error(`Error: ${error.message}`);
}
console.log(`RO Property - should be 17: ${myReadOnly.get()}`);
}
console.log("\n\nIMMUTABLE TEST\n");
let myImutable = data.property({
initial: 17,
readonly: true,
immutable: true,
validator: function (value)
{
return typeof value === 'number';
},
onChange: function (oldValue, newValue)
{
console.log(`IM Property changed from ${oldValue} to ${newValue}`);
}
});
{
// test: get
console.log(`IM Property - should be 17: ${myImutable.get()}`);
// test: set
try
{
myImutable.set(10);
}
catch (error)
{
console.error(`Error: ${error.message}`);
}
console.log(`IM Property - should be 17: ${myImutable.get()}`);
// test: illegal value
try
{
myImutable.set('test');
}
catch (error)
{
console.error(`Error: ${error.message}`);
}
console.log(`IM Property - should be 17: ${myImutable.get()}`);
}
console.log("\n\nFINISHED\n");