Skip to content

Commit

Permalink
bring back UnicodeInCSVTest.java and UnicodeInXLSTest.java
Browse files Browse the repository at this point in the history
  • Loading branch information
tkobayas committed Nov 8, 2023
1 parent 18c8984 commit 5c0f859
Show file tree
Hide file tree
Showing 2 changed files with 226 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.drools.decisiontable;

import java.util.ArrayList;
import java.util.List;

import org.drools.drl.extensions.DecisionTableFactory;
import org.drools.kiesession.rulebase.InternalKnowledgeBase;
import org.drools.kiesession.rulebase.KnowledgeBaseFactory;
import org.junit.After;
import org.junit.Test;
import org.kie.api.command.Command;
import org.kie.api.io.ResourceType;
import org.kie.api.runtime.KieSession;
import org.kie.internal.builder.DecisionTableConfiguration;
import org.kie.internal.builder.DecisionTableInputType;
import org.kie.internal.builder.KnowledgeBuilder;
import org.kie.internal.builder.KnowledgeBuilderFactory;
import org.kie.internal.command.CommandFactory;
import org.kie.internal.io.ResourceFactory;

import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.fail;

public class UnicodeInCSVTest {

private KieSession ksession;

@After
public void tearDown() {
if (ksession != null) {
ksession.dispose();
}
}

@Test
public void testUnicodeCSVDecisionTable() {

DecisionTableConfiguration dtconf = KnowledgeBuilderFactory.newDecisionTableConfiguration();
dtconf.setInputType(DecisionTableInputType.CSV);
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add(ResourceFactory.newClassPathResource("unicode.drl.csv", getClass()), ResourceType.DTABLE, dtconf);
if (kbuilder.hasErrors()) {
System.out.println(kbuilder.getErrors().toString());
System.out.println(DecisionTableFactory.loadFromInputStream(getClass().getResourceAsStream("unicode.drl.xls"), dtconf));
fail("Cannot build CSV decision table containing utf-8 characters\n" + kbuilder.getErrors().toString() );
}
InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addPackages(kbuilder.getKnowledgePackages());

ksession = kbase.newKieSession();

List<Command<?>> commands = new ArrayList<>();
List<Člověk> dospělí = new ArrayList<>();
commands.add(CommandFactory.newSetGlobal("dospělí", dospělí));
Člověk Řehoř = new Člověk();
Řehoř.setVěk(30);
Řehoř.setJméno("Řehoř");
commands.add(CommandFactory.newInsert(Řehoř));
commands.add(CommandFactory.newFireAllRules());

ksession.execute(CommandFactory.newBatchExecution(commands));

// people with age greater than 18 should be added to list of adults
assertThat(kbase.getRule("org.drools.decisiontable", "přidej k dospělým")).isNotNull();
assertThat(dospělí).hasSize(5);
assertThat(dospělí.iterator().next().getJméno()).isEqualTo("Řehoř");

assertThat(kbase.getRule("org.drools.decisiontable", "привет мир")).isNotNull();
assertThat(kbase.getRule("org.drools.decisiontable", "你好世界")).isNotNull();
assertThat(kbase.getRule("org.drools.decisiontable", "hallå världen")).isNotNull();
assertThat(kbase.getRule("org.drools.decisiontable", "مرحبا العالم")).isNotNull();
}

public static class Člověk {

private int věk;
private String jméno;

public void setVěk(int věk) {
this.věk = věk;
}

public int getVěk() {
return věk;
}

public void setJméno(String jméno) {
this.jméno = jméno;
}

public String getJméno() {
return jméno;
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.drools.decisiontable;

import java.util.ArrayList;
import java.util.List;

import org.drools.drl.extensions.DecisionTableFactory;
import org.drools.kiesession.rulebase.InternalKnowledgeBase;
import org.drools.kiesession.rulebase.KnowledgeBaseFactory;
import org.junit.After;
import org.junit.Test;
import org.kie.api.command.Command;
import org.kie.api.io.ResourceType;
import org.kie.api.runtime.KieSession;
import org.kie.internal.builder.DecisionTableConfiguration;
import org.kie.internal.builder.DecisionTableInputType;
import org.kie.internal.builder.KnowledgeBuilder;
import org.kie.internal.builder.KnowledgeBuilderFactory;
import org.kie.internal.command.CommandFactory;
import org.kie.internal.io.ResourceFactory;

import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.fail;

public class UnicodeInXLSTest {

private KieSession ksession;

@After
public void tearDown() {
if (ksession != null) {
ksession.dispose();
}
}

@Test
public void testUnicodeXLSDecisionTable() {

DecisionTableConfiguration dtconf = KnowledgeBuilderFactory.newDecisionTableConfiguration();
dtconf.setInputType(DecisionTableInputType.XLS);
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add(ResourceFactory.newClassPathResource("unicode.drl.xls", getClass()), ResourceType.DTABLE, dtconf);
if (kbuilder.hasErrors()) {
System.out.println(kbuilder.getErrors().toString());
System.out.println(DecisionTableFactory.loadFromInputStream(getClass().getResourceAsStream("unicode.drl.xls"), dtconf));
fail("Cannot build XLS decision table containing utf-8 characters\n" + kbuilder.getErrors().toString() );
}
InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addPackages(kbuilder.getKnowledgePackages());

ksession = kbase.newKieSession();

List<Command<?>> commands = new ArrayList<>();
List<Člověk> dospělí = new ArrayList<>();
commands.add(CommandFactory.newSetGlobal("dospělí", dospělí));
Člověk Řehoř = new Člověk();
Řehoř.setVěk(30);
Řehoř.setJméno("Řehoř");
commands.add(CommandFactory.newInsert(Řehoř));
commands.add(CommandFactory.newFireAllRules());

ksession.execute(CommandFactory.newBatchExecution(commands));

// people with age greater than 18 should be added to list of adults
assertThat(kbase.getRule("org.drools.decisiontable", "přidej k dospělým")).isNotNull();
assertThat(dospělí).hasSize(5);
assertThat(dospělí.iterator().next().getJméno()).isEqualTo("Řehoř");

assertThat(kbase.getRule("org.drools.decisiontable", "привет мир")).isNotNull();
assertThat(kbase.getRule("org.drools.decisiontable", "你好世界"));
assertThat(kbase.getRule("org.drools.decisiontable", "hallå världen")).isNotNull();
assertThat(kbase.getRule("org.drools.decisiontable", "مرحبا العالم")).isNotNull();
}

public static class Člověk {

private int věk;
private String jméno;

public void setVěk(int věk) {
this.věk = věk;
}

public int getVěk() {
return věk;
}

public void setJméno(String jméno) {
this.jméno = jméno;
}

public String getJméno() {
return jméno;
}
}
}

0 comments on commit 5c0f859

Please sign in to comment.