@Test
public void testInternalWriteAllJson() {

    final SomeDefinition def = mock(SomeDefinition.class);
    when(def.getAttributeValues()).thenReturn(Arrays.asList("a", "b", "c", "?"));
    final WhateverKeyDefToken alphaToken = mock(WhateverKeyDefToken.class);
    when(alphaToken.getLexTokens()).thenReturn(new String[]{"a", "alpha"});
    final WhateverKeyDefToken bravoToken = mock(WhateverKeyDefToken.class);
    when(bravoToken.getLexTokens()).thenReturn(new String[]{"b", "bravo"});
    final WhateverKeyDefToken unknownToken = mock(WhateverKeyDefToken.class);
    when(unknownToken.getLexTokens()).thenReturn(new String[]{"?", "unknown"});
    final WhateverKeyDefToken[] tokens = new WhateverKeyDefToken[]{alphaToken, bravoToken, unknownToken};
    for (WhateverKeyDefToken token : tokens) {
        doCallRealMethod().when(token).nonUnknown();
        doCallRealMethod().when(token).getToken();
        doCallRealMethod().when(token).writeJson(any(SomeDefinition.class), any(NamePathResolver.class));
    }
    final JsonValue parentValue = JsonCnd.internalWriteAllJson(def, resolver, tokens);
    assertSame("parentValue is JsonObject", parentValue.getValueType(), JsonValue.ValueType.OBJECT);
    final JsonObject parentObject = parentValue.asJsonObject();
    assertEquals("alpha key is present and is equal to [a, alpha]",
            Json.createArrayBuilder().add("a").add("alpha").build(), parentObject.get("a"));
    assertEquals("bravo key is present and is equal to [b, bravo]",
            Json.createArrayBuilder().add("b").add("bravo").build(), parentObject.get("b"));
    assertFalse("charlie key is not present", parentObject.containsKey("c"));
    assertFalse("unknown key is not present", parentObject.containsKey("?"));
}