diff --git a/nlp-utils/src/test/java/org/apache/opennlp/utils/cfg/ContextFreeGrammarTest.java b/nlp-utils/src/test/java/org/apache/opennlp/utils/cfg/ContextFreeGrammarTest.java
index 1534027..a16c6e9 100644
--- a/nlp-utils/src/test/java/org/apache/opennlp/utils/cfg/ContextFreeGrammarTest.java
+++ b/nlp-utils/src/test/java/org/apache/opennlp/utils/cfg/ContextFreeGrammarTest.java
@@ -23,8 +23,7 @@
 import org.junit.BeforeClass;
 import org.junit.Test;
 
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.*;
 
 /**
  * Testcase for {@link org.apache.opennlp.utils.cfg.ContextFreeGrammar}
@@ -112,6 +111,7 @@
   public void testSingleSentenceExpansion() throws Exception {
     ContextFreeGrammar contextFreeGrammar = new ContextFreeGrammar(nonTerminals, terminals, rules, startSymbol);
     String[] expansion = contextFreeGrammar.leftMostDerivation("S");
+    assertArrayEquals(new String[]{"the", "man", "works"}, expansion);
     checkExpansion(expansion);
   }
 
@@ -127,9 +127,11 @@
   public void testMultipleSentencesExpansion() throws Exception {
     ContextFreeGrammar contextFreeGrammar = new ContextFreeGrammar(nonTerminals, terminals, rules, startSymbol);
     String[] expansion = contextFreeGrammar.leftMostDerivation("S", "CJ", "S");
+    assertArrayEquals(new String[]{"the", "man", "works", "and", "the", "man", "works"}, expansion);
     checkExpansion(expansion);
-
     expansion = contextFreeGrammar.leftMostDerivation("S", "DJ", "S", "CJ", "P");
+    assertArrayEquals(new String[]{"the", "man", "works", "but", "the", "man", "works", "and", "the", "man", "works",
+            "and", "the", "man", "works"}, expansion);
     checkExpansion(expansion);
   }
 
@@ -138,7 +140,6 @@
     ContextFreeGrammar contextFreeGrammar = new ContextFreeGrammar(nonTerminals, terminals, rules, startSymbol, true);
     String[] expansion = contextFreeGrammar.leftMostDerivation("S", "CJ", "S");
     checkExpansion(expansion);
-
     expansion = contextFreeGrammar.leftMostDerivation("S", "DJ", "S", "CJ", "P");
     checkExpansion(expansion);
   }
diff --git a/nlp-utils/src/test/java/org/apache/opennlp/utils/cfg/ProbabilisticContextFreeGrammarTest.java b/nlp-utils/src/test/java/org/apache/opennlp/utils/cfg/ProbabilisticContextFreeGrammarTest.java
index 1101cd9..36b87ea 100644
--- a/nlp-utils/src/test/java/org/apache/opennlp/utils/cfg/ProbabilisticContextFreeGrammarTest.java
+++ b/nlp-utils/src/test/java/org/apache/opennlp/utils/cfg/ProbabilisticContextFreeGrammarTest.java
@@ -120,10 +120,10 @@
     ProbabilisticContextFreeGrammar pcfg = new ProbabilisticContextFreeGrammar(nonTerminals, terminals, rules, startSymbol);
 
     double pi = pcfg.pi(sentence, 0, 1, pcfg.getStartSymbol()).getProbability();
-    assertTrue(pi <= 1 && pi >= 0);
+    assertEquals(0.3d, pi, 0d);
 
-    pi = pcfg.pi(sentence, 2, 7, "VP").getProbability();
-    assertTrue(pi <= 1 && pi >= 0);
+    pi = pcfg.pi(sentence, 2, 4, "VP").getProbability();
+    assertEquals(0.35d, pi, 0d);
   }
 
   @Test
