LanguageProfile { public LanguageProfile(int length) { this.length = length; } LanguageProfile(int length);  LanguageProfile();  LanguageProfile(String content, int length);  LanguageProfile(String content); long getCount(); long getCount(String ngram); void add(String ngram); void add(String ngram, long count); double distance(LanguageProfile that); @Override String toString(); static final int DEFAULT_NGRAM_LENGTH; static boolean useInterleaved; }
@Test public void testLanguageProfile() throws IOException { LanguageProfile foo = new LanguageProfile(); assertEquals(0, foo.getCount("foo")); foo.add("foo"); assertEquals(1, foo.getCount("foo")); foo.add("foo", 3); assertEquals(4, foo.getCount("foo")); LanguageProfile bar = new LanguageProfile(); assertEquals(1.0, foo.distance(bar), 1e-8); bar.add("bar"); assertEquals(Math.sqrt(2.0), foo.distance(bar), 1e-8); bar.add("bar", 3); assertEquals(Math.sqrt(2.0), foo.distance(bar), 1e-8); LanguageProfile foobar = new LanguageProfile(); assertTrue(foo.distance(foobar) == bar.distance(foobar)); foobar.add("foo"); assertTrue( foo.distance(foobar) < bar.distance(foobar)); foobar.add("bar"); assertTrue(foo.distance(foobar) == bar.distance(foobar)); }