@Test
  public void testEmptyModel() {
    final ScoreCardModel model = new ScoreCardModel();
    model.setName("test");

    final String drl = GuidedScoreCardDRLPersistence.marshal(model);
    assertNotNull(drl);

    assertFalse(drl.contains("package"));
    assertEquals(11, StringUtil.countMatches(drl, "rule \""));

    assertEquals(2, StringUtil.countMatches(drl, "import "));
  }
  @Test
  public void testEmptyModelInPackage() {
    final ScoreCardModel model = new ScoreCardModel();
    model.setName("test");
    model.setPackageName("org.drools.workbench.models.guided.scorecard.backend");

    final String drl = GuidedScoreCardDRLPersistence.marshal(model);
    assertNotNull(drl);

    assertTrue(drl.contains("package org.drools.workbench.models.guided.scorecard.backend"));
    assertEquals(11, StringUtil.countMatches(drl, "rule \""));

    assertEquals(2, StringUtil.countMatches(drl, "import "));
  }
  @Test
  public void testModelWithImportsAndFactName() {
    final ScoreCardModel model = new ScoreCardModel();
    model.setName("test");
    model.setPackageName("org.drools.workbench.models.guided.scorecard.backend");
    model.getImports().addImport(new Import("org.smurf.Pupa"));
    model.setFactName("org.drools.MoreCheese");

    final String drl = GuidedScoreCardDRLPersistence.marshal(model);
    assertNotNull(drl);

    assertTrue(drl.contains("package org.drools.workbench.models.guided.scorecard.backend"));
    assertEquals(11, StringUtil.countMatches(drl, "rule \""));

    assertEquals(3, StringUtil.countMatches(drl, "import "));
  }
  @Test
  public void testBasicModel() {

    final ScoreCardModel model = new ScoreCardModel();
    model.setName("test");

    model.setPackageName("org.drools.workbench.models.guided.scorecard.backend");
    model
        .getImports()
        .addImport(new Import("org.drools.workbench.models.guided.scorecard.backend.Applicant"));
    model.setReasonCodesAlgorithm("none");
    model.setBaselineScore(0.0);
    model.setInitialScore(0.0);

    model.setFactName("org.drools.workbench.models.guided.scorecard.backend.Applicant");
    model.setFieldName("score");
    model.setUseReasonCodes(false);
    model.setReasonCodeField("");

    final Characteristic c = new Characteristic();
    c.setName("c1");
    c.setFact("org.drools.workbench.models.guided.scorecard.backend.Applicant");
    c.setDataType("Double");
    c.setField("age");
    c.setBaselineScore(0.0);
    c.setReasonCode("");

    final Attribute a = new Attribute();
    a.setOperator("=");
    a.setValue("10");
    a.setPartialScore(0.1);
    a.setReasonCode("");

    c.getAttributes().add(a);
    model.getCharacteristics().add(c);

    final String drl1 = GuidedScoreCardDRLPersistence.marshal(model);
    assertNotNull(drl1);

    final String drl2 = GuidedScoreCardDRLPersistence.marshal(model);
    assertNotNull(drl2);
  }