package marytts.tools.upgrade;
import static org.junit.Assert.*;
import static org.hamcrest.Matchers.*;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
import java.io.File;
import java.io.FileReader;
import java.io.InputStream;
import java.net.URL;
import java.util.List;
import com.cloudbees.diff.Diff;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import marytts.tools.install.InstallFileParser;
import marytts.tools.install.VoiceComponentDescription;
public class UpgradeTest {
@Rule
public TemporaryFolder tempDir = new TemporaryFolder();
@Test
public void convertHmmConfig() throws Exception {
// setup SUT
URL componentUrl = UpgradeTest.class.getResource("/marytts/tools/upgrade/cmu-slt-4-component.xml");
InstallFileParser parser = new InstallFileParser(componentUrl);
List<VoiceComponentDescription> voiceDescriptions = parser.getVoiceDescriptions();
String packageFilename = voiceDescriptions.get(0).getPackageFilename();
Mary4To5VoiceConverter converter = new Mary4To5VoiceConverter(voiceDescriptions, new File(packageFilename));
// exercise
converter.loadConfigFromStream(UpgradeTest.class.getResourceAsStream("en_US-cmu-slt-hsmm-4.x.config"));
converter.updateConfig("CmuSltHsmm");
File convertedConfigFile = tempDir.newFile("converted.config");
converter.saveConfig(convertedConfigFile);
// verify
InputStream expectedConfigStream = UpgradeTest.class.getResourceAsStream("en_US-cmu-slt-hsmm-5.config");
File expectedConfigFile = tempDir.newFile("expected.config");
FileUtils.copyInputStreamToFile(expectedConfigStream, expectedConfigFile);
boolean ignoreWhiteSpace = false;
Diff diff = Diff.diff(convertedConfigFile, expectedConfigFile, ignoreWhiteSpace);
String uniDiff = diff.toUnifiedDiff(expectedConfigFile.getPath(), convertedConfigFile.getPath(), new FileReader(
expectedConfigFile), new FileReader(convertedConfigFile), 2);
assertThat("Config differs from expectation as follows:" + IOUtils.LINE_SEPARATOR + uniDiff, diff, is(empty()));
}
}