import java.io.ByteArrayInputStream;

import org.kie.api.KieBase;
import org.kie.api.KieServices;
import org.kie.api.io.Resource;
import org.kie.api.runtime.KieSession;
import org.kie.internal.utils.KieHelper;

public class Test {
    public static void main(String[] argv) throws Exception {
        String testString = "\u2200x. \u2203y. x < y";
        String rules =
            "rule \"foo\"\n" +
            "  when\n" +
            "    not String()\n" +
            "  then\n" +
            "    insert(\"" + testString + "\");\n" +
            "  end\n";

        KieServices kieServices = KieServices.Factory.get();
        KieHelper kieHelper = new KieHelper();

        Resource rulesResource = kieServices.getResources().newByteArrayResource(rules.getBytes("UTF-8"), "UTF-8");
        rulesResource.setTargetPath("src/main/resources/rules.drl");
        kieHelper.addResource(rulesResource);

        KieBase kieBase = kieHelper.build();

        KieSession kieSession = kieBase.newKieSession();
        kieSession.fireAllRules();

        String out = (String) kieSession.getObjects().iterator().next();
        System.out.println((int) out.charAt(0));

        if (!out.equals(testString))
            throw new RuntimeException("Strings are not equal");
    }
}
