@Test public void testMediaTypeUnion() throws ParseException, TokeniserException { Policy p; p = parse("plugin-types a/b"); Policy q; q = parse("plugin-types c/d"); PluginTypesDirective d1 = p.getDirectiveByType(PluginTypesDirective.class); PluginTypesDirective d2 = q.getDirectiveByType(PluginTypesDirective.class); d1.union(d2); assertEquals("directive-name, directive-value", "plugin-types a/b c/d", d1.show()); }
@Test() public void testPluginTypesParsing() throws ParseException, TokeniserException { failsToParse("plugin-types"); // XXX: technically allowed via ietf-token if an RFC introduces a type/subtype that is empty failsToParse("plugin-types /"); assertEquals( "directive-name, directive-value", "plugin-types a/b", parse("plugin-types a/b").getDirectiveByType(PluginTypesDirective.class).show()); assertEquals( "directive-name, directive-value", "plugin-types a/b c/d", parse("plugin-types a/b c/d").getDirectiveByType(PluginTypesDirective.class).show()); assertEquals( "directive-name, directive-value", "plugin-types x-a/x-b", parse("plugin-types x-a/x-b").getDirectiveByType(PluginTypesDirective.class).show()); assertEquals( "directive-name, directive-value", "plugin-types X-A/X-B", parse("plugin-types X-A/X-B").getDirectiveByType(PluginTypesDirective.class).show()); Policy p, q; p = parse("plugin-types a/b"); q = parse("plugin-types c/d; script-src *"); PluginTypesDirective d1 = p.getDirectiveByType(PluginTypesDirective.class); PluginTypesDirective d2 = q.getDirectiveByType(PluginTypesDirective.class); d1.union(d2); assertEquals("plugin-types union", "plugin-types a/b c/d", d1.show()); p = parse("plugin-types a/b"); q = parse("plugin-types a/c;"); d1 = p.getDirectiveByType(PluginTypesDirective.class); d2 = q.getDirectiveByType(PluginTypesDirective.class); assertFalse("plugin-type subtype inequality", d1.equals(d2)); p = parse("plugin-types a/b"); q = parse("plugin-types a/b;"); d1 = p.getDirectiveByType(PluginTypesDirective.class); d2 = q.getDirectiveByType(PluginTypesDirective.class); assertEquals("plugin-types hashcode equality", d1.hashCode(), d2.hashCode()); }