/*
* Copyright (C) 2010 Brockmann Consult GmbH (info@brockmann-consult.de)
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation; either version 3 of the License, or (at your option)
* any later version.
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, see http://www.gnu.org/licenses/
*/
package com.bc.ceres.compiler;
import junit.framework.TestCase;
import java.util.HashSet;
import com.bc.ceres.compiler.CodeMapper;
public class CodeMapperTest extends TestCase {
public void testCodeMapper() {
final HashSet<String> nameSet = new HashSet<String>();
nameSet.add("b1");
nameSet.add("b2");
nameSet.add("b3");
nameSet.add("b4");
String expression = "b4 + sqrt(b1 * b1 + b2 * b2)";
CodeMapper.NameMapper mapper = new CodeMapper.NameMapper() {
public String mapName(String name) {
return nameSet.contains(name) ? "_a" + name : null;
}
};
CodeMapper.CodeMapping codeMapping = CodeMapper.mapCode(expression, mapper);
assertNotNull(codeMapping);
assertEquals("_ab4 + sqrt(_ab1 * _ab1 + _ab2 * _ab2)", codeMapping.getMappedCode());
assertEquals(3, codeMapping.getMappings().size());
assertEquals("_ab1", codeMapping.getMappings().get("b1"));
assertEquals("_ab2", codeMapping.getMappings().get("b2"));
assertEquals("_ab4", codeMapping.getMappings().get("b4"));
}
}