Skip to content

Commit

Permalink
Implemented JavaTrieClone and JavaTrieEqualQ and added corresponding …
Browse files Browse the repository at this point in the history
…unit tests.
  • Loading branch information
antononcube committed Jan 19, 2017
1 parent a49f8bf commit 23746ac
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 3 deletions.
11 changes: 11 additions & 0 deletions JavaTriesWithFrequencies.m
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,8 @@ Mathematica is (C) Copyright 1988-2017 Wolfram Research, Inc.

BeginPackage["JavaTriesWithFrequencies`"]

JavaTrieClone::usage = "JavaTrieClone[ jTr ] makes a deep clone of a given Java trie."

JavaTrieCompleteMatch::usage = "JavaTrieCompleteMatch[ jTr_, sw:{_String..}] finds is fraction\
of the list of strings sw a complete match in the Java trie jTr."

Expand All @@ -130,6 +132,9 @@ Mathematica is (C) Copyright 1988-2017 Wolfram Research, Inc.
JavaTrieCreateBySplit::usage = "JavaTrieCreate[ ws:{_String..}, regex_String:\"\"] creates a Java trie object\
from a list of strings that are split with a given regex."

JavaTrieEqualQ::usage = "JavaTrieEqualQ[ jTr1, jTr2] compares two Java tries and returns True if\
the tries have the same shape and all corresponding keys and values are the same."

JavaTrieGetWords::usage = "JavaTrieGetWords[ jTr_, sw:{_String..}] gives a list words in jTr that start with sw."

JavaTrieInsert::usage = "JavaTrieInsert[ jTr_, sw:{_String..}] inserts a list of strings into the Java trie jTr.\
Expand Down Expand Up @@ -165,6 +170,9 @@ Mathematica is (C) Copyright 1988-2017 Wolfram Research, Inc.

Needs["JLink`"]

Clear[JavaTrieClone]
JavaTrieClone[ jTr_?JavaObjectQ ] := jTr@clone[];

Clear[JavaTrieCreateBySplit]
JavaTrieCreateBySplit[words : {_String ..}, regex_String: ""] :=
Block[{jWords, jSp},
Expand Down Expand Up @@ -194,6 +202,9 @@ Mathematica is (C) Copyright 1988-2017 Wolfram Research, Inc.
TrieFunctions`create[jWords]
];

Clear[JavaTrieEqualQ]
JavaTrieEqualQ[ jTr1_?JavaObjectQ, jTr2_?JavaObjectQ ] := jTr1@equals[ jTr2 ];

Clear[JavaTrieMerge]
JavaTrieMerge[jTr1_?JavaObjectQ, jTr2_?JavaObjectQ] :=
TrieFunctions`merge[jTr1, jTr2];
Expand Down
37 changes: 34 additions & 3 deletions UnitTests/JavaTriesWithFrequencies-Unit-Tests.wlt
Original file line number Diff line number Diff line change
Expand Up @@ -75,23 +75,34 @@ VerificationTest[(* 2 *)
]

VerificationTest[(* 3 *)
CompoundExpression[Set[words, List["bark", "barkeeper", "barkeepers", "barkeep", "barks", "barking", "barked", "barker", "barkers"]], Set[jTr, JavaTrieCreateBySplit[words]], StringMatchQ[SymbolName[jTr], StringExpression["JavaObject", BlankSequence[]]]]
CompoundExpression[
Set[words, List["bark", "barkeeper", "barkeepers", "barkeep", "barks", "barking", "barked", "barker", "barkers"]],
Set[jTr, JavaTrieCreateBySplit[words]],
StringMatchQ[SymbolName[jTr], StringExpression["JavaObject", BlankSequence[]]]
]
,
True
,
TestID->"JavaTrieCreation1"
]

VerificationTest[(* 4 *)
CompoundExpression[Set[words2, List["bar", "barring", "car", "care", "caress", "cold", "colder"]], Set[jTr2, JavaTrieCreateBySplit[words2]], StringMatchQ[SymbolName[jTr2], StringExpression["JavaObject", BlankSequence[]]]]
CompoundExpression[
Set[words2, List["bar", "barring", "car", "care", "caress", "cold", "colder"]],
Set[jTr2, JavaTrieCreateBySplit[words2]],
StringMatchQ[SymbolName[jTr2], StringExpression["JavaObject", BlankSequence[]]]
]
,
True
,
TestID->"JavaTrieCreation2"
]

VerificationTest[(* 5 *)
CompoundExpression[Set[jTr1, JavaTrieCreate[Map[Characters, words]]], StringMatchQ[SymbolName[jTr1], StringExpression["JavaObject", BlankSequence[]]]]
CompoundExpression[
Set[jTr1, JavaTrieCreate[Map[Characters, words]]],
StringMatchQ[SymbolName[jTr1], StringExpression["JavaObject", BlankSequence[]]]
]
,
True
]
Expand Down Expand Up @@ -182,4 +193,24 @@ VerificationTest[(* 16 *)
TestID->"JavaTrieShrinkAndGetWords1"
]

VerificationTest[(* 17 *)
CompoundExpression[
Set[jTr, JavaTrieCreateBySplit[words]],
Set[jTr1, JavaTrieCreate[Map[Characters, words]]],
JavaTrieEqualQ[jTr, jTr1]
]
,
True
,
TestID->"JavaTrieEqual1"
]

VerificationTest[(* 18 *)
(JavaTrieToJSON@JavaTrieShrink@jTr) == (JavaTrieToJSON@JavaTrieShrink@JavaTrieClone@jTr)
,
True
,
TestID->"JavaTrieCloneEquality1"
]

EndTestSection[]

0 comments on commit 23746ac

Please sign in to comment.