@Test
public void canRepresent() throws Exception {

    // nulls are always ok
    Assert.assertEquals(true, TMobileNlGSMCharset.canRepresent(null));
    Assert.assertEquals(true, TMobileNlGSMCharset.canRepresent(" "));
    Assert.assertEquals(true, TMobileNlGSMCharset.canRepresent("\n\r"));
    Assert.assertEquals(true, TMobileNlGSMCharset.canRepresent("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"));
    Assert.assertEquals(true, TMobileNlGSMCharset.canRepresent("Hello @ World"));
    Assert.assertEquals(true, TMobileNlGSMCharset.canRepresent("$_"));
    // euro currency symbol is good
    Assert.assertEquals(true, TMobileNlGSMCharset.canRepresent("\u20ac"));
    // arabic char is not valid TMobileNlGSM char
    Assert.assertEquals(false, TMobileNlGSMCharset.canRepresent("\u0623"));
    // '`' char is NOT in the TMobileNlGSM charset
    Assert.assertEquals(false, TMobileNlGSMCharset.canRepresent("`"));
    // []{}^~|\ GSM extended table chars are not supported by T-Mo NL
    Assert.assertEquals(false, TMobileNlGSMCharset.canRepresent("{}[\\]^~|"));
    
    // create a fully correct string from lookup table
    // strings to decode/encode to/from UTF-8
    // build a string of every GSM base-table char
    StringBuilder s = new StringBuilder();
    for (int i = 0; i < GSMCharset.CHAR_TABLE.length; i++) {
        char c = GSMCharset.CHAR_TABLE[i];
        if (c > 0) {
            s.append(c);
        }
    }
    s.append("\u20ac");  // and the euro-mark
    
    Assert.assertEquals(true, TMobileNlGSMCharset.canRepresent(s.toString()));
}