forked from fanruan/finekit
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.5 KiB
50 lines
1.5 KiB
package com.fanruan.api.cal; |
|
|
|
import com.fanruan.api.Prepare; |
|
import com.fr.script.Calculator; |
|
import com.fr.stable.ParameterProvider; |
|
import com.fr.stable.UtilEvalError; |
|
import com.fr.stable.script.NameSpace; |
|
import org.junit.Assert; |
|
import org.junit.Test; |
|
|
|
import java.util.HashMap; |
|
import java.util.Map; |
|
import java.util.TreeMap; |
|
|
|
/** |
|
* @author richie |
|
* @version 10.0 |
|
* Created by richie on 2019-08-16 |
|
*/ |
|
public class ParameterKitTest extends Prepare { |
|
|
|
@Test |
|
public void analyze4ParametersFromFormula() { |
|
ParameterProvider[] providers = ParameterKit.analyze4ParametersFromFormula("=sum($p1, $p2) + max($p4 - 1, pow(2, $p5))"); |
|
TreeMap<String, Object> map = new TreeMap<>(); |
|
for (ParameterProvider provider : providers) { |
|
map.put(provider.getName(), provider.getValue()); |
|
} |
|
String[] names = map.keySet().toArray(new String[0]); |
|
Assert.assertArrayEquals(new String[]{"p1", "p2", "p4", "p5"}, names); |
|
} |
|
|
|
@Test |
|
public void createParameterMapNameSpace() { |
|
Map<String, Object> map = new HashMap<>(); |
|
map.put("p1", 100); |
|
map.put("p2", 200); |
|
NameSpace ns = ParameterKit.createParameterMapNameSpace(map); |
|
Calculator calculator = Calculator.createCalculator(); |
|
calculator.pushNameSpace(ns); |
|
try { |
|
Object r = calculator.eval("=$p1 + $p2"); |
|
Assert.assertEquals(300, r); |
|
} catch (UtilEvalError utilEvalError) { |
|
Assert.fail(); |
|
} finally { |
|
calculator.removeNameSpace(ns); |
|
} |
|
} |
|
} |