103 lines
2.4 KiB
Dart
103 lines
2.4 KiB
Dart
|
|
import 'package:d4rt_formulas/formula_evaluator.dart';
|
|
import 'package:test/test.dart';
|
|
import 'package:d4rt_formulas/formula_models.dart';
|
|
|
|
void main() {
|
|
|
|
test('Parses Newton\'s second law formula from set literal', () {
|
|
final setLiteral = {
|
|
"name": "Newton's second law",
|
|
"input": [
|
|
{ "name": 'm', "magnitude": 'mass'},
|
|
{ "name": 'a', "magnitude": 'acceleration'}
|
|
],
|
|
"output": { "name": 'F', "magnitude": 'force'},
|
|
"d4rtCode": '''
|
|
F = a * m;
|
|
'''
|
|
};
|
|
|
|
final formula = Formula.fromSet(setLiteral);
|
|
final evaluator = FormulaEvaluator();
|
|
|
|
final result = evaluator.evaluate(formula, {
|
|
'm': 10.0, // 10 kg
|
|
'a': 9.8, // 9.8 m/s²
|
|
});
|
|
|
|
expect(result, 98.0); // F = m * a = 10 * 9.8 = 98 N
|
|
});
|
|
|
|
test( 'd4rt parses formula from literal', (){
|
|
final literal = """
|
|
{
|
|
"name": "Newton's second law",
|
|
"input": [
|
|
{ "name": 'm', "magnitude": 'mass'},
|
|
{ "name": 'a', "magnitude": 'acceleration'}
|
|
],
|
|
"output": { "name": 'F', "magnitude": 'force'},
|
|
"d4rtCode": '''
|
|
F = a * m;
|
|
'''
|
|
}
|
|
""";
|
|
|
|
final formula = Formula.fromStringLiteral(literal);
|
|
final evaluator = FormulaEvaluator();
|
|
|
|
final result = evaluator.evaluate(formula, {
|
|
'm': 10.0, // 10 kg
|
|
'a': 9.8, // 9.8 m/s²
|
|
});
|
|
|
|
expect(result, 98.0); // F = m * a = 10 * 9.8 = 98 N
|
|
|
|
});
|
|
|
|
|
|
test( 'd4rt parses formula from list literal', (){
|
|
final literal = """
|
|
[
|
|
{
|
|
"name": "Newton's second law",
|
|
"input": [
|
|
{ "name": 'm', "magnitude": 'mass'},
|
|
{ "name": 'a', "magnitude": 'acceleration'}
|
|
],
|
|
"output": { "name": 'F', "magnitude": 'force'},
|
|
"d4rtCode": '''
|
|
F = a * m;
|
|
'''
|
|
},
|
|
{
|
|
"name": "Newton's second law, again",
|
|
"input": [
|
|
{ "name": 'mass', "magnitude": 'mass'},
|
|
{ "name": 'acc', "magnitude": 'acceleration'}
|
|
],
|
|
"output": { "name": 'force', "magnitude": 'force'},
|
|
"d4rtCode": '''
|
|
force = mass * acc;
|
|
'''
|
|
}
|
|
]
|
|
""";
|
|
|
|
final formulas = Formula.fromArrayStringLiteral(literal);
|
|
final evaluator = FormulaEvaluator();
|
|
|
|
final formula = formulas[0];
|
|
|
|
final result = evaluator.evaluate(formula, {
|
|
'm': 10.0, // 10 kg
|
|
'a': 9.8, // 9.8 m/s²
|
|
});
|
|
|
|
expect(result, 98.0); // F = m * a = 10 * 9.8 = 98 N
|
|
|
|
});
|
|
|
|
}
|
|
|