@Test
 public void testFromComplexStringWithSemicolon() {
   CacheControlHeaderProvider cp =
       new CacheControlHeaderProvider() {
         protected Message getCurrentMessage() {
           Message m = new MessageImpl();
           m.put(CacheControlHeaderProvider.CACHE_CONTROL_SEPARATOR_PROPERTY, ";");
           return m;
         }
       };
   CacheControl c =
       cp.fromString(
           "private=\"foo\";no-cache=\"bar\";no-store;no-transform;"
               + "must-revalidate;proxy-revalidate;max-age=2;s-maxage=3");
   assertTrue(
       c.isPrivate()
           && c.isNoStore()
           && c.isMustRevalidate()
           && c.isProxyRevalidate()
           && c.isNoCache());
   assertTrue(
       c.isNoTransform() && c.getNoCacheFields().size() == 1 && c.getPrivateFields().size() == 1);
   assertEquals("foo", c.getPrivateFields().get(0));
   assertEquals("bar", c.getNoCacheFields().get(0));
 }
  @Test
  public void testReadMultiplePrivateAndNoCacheFields() {
    String s =
        "private=\"foo1,foo2\",no-store,no-transform,"
            + "must-revalidate,proxy-revalidate,max-age=2,s-maxage=3,no-cache=\"bar1,bar2\","
            + "ext=1";
    CacheControl cc = CacheControl.valueOf(s);

    assertTrue(cc.isPrivate());
    List<String> privateFields = cc.getPrivateFields();
    assertEquals(2, privateFields.size());
    assertEquals("foo1", privateFields.get(0));
    assertEquals("foo2", privateFields.get(1));
    assertTrue(cc.isNoCache());
    List<String> noCacheFields = cc.getNoCacheFields();
    assertEquals(2, noCacheFields.size());
    assertEquals("bar1", noCacheFields.get(0));
    assertEquals("bar2", noCacheFields.get(1));

    assertTrue(cc.isNoStore());
    assertTrue(cc.isNoTransform());
    assertTrue(cc.isMustRevalidate());
    assertTrue(cc.isProxyRevalidate());
    assertEquals(2, cc.getMaxAge());
    assertEquals(3, cc.getSMaxAge());

    Map<String, String> exts = cc.getCacheExtension();
    assertEquals(1, exts.size());
    assertEquals("1", exts.get("ext"));
  }
 @Test
 public void testFromSimpleString() {
   CacheControl c = CacheControl.valueOf("public,must-revalidate");
   assertTrue(!c.isPrivate() && !c.isNoStore() && c.isMustRevalidate() && !c.isProxyRevalidate());
   assertTrue(
       !c.isNoCache()
           && !c.isNoTransform()
           && c.getNoCacheFields().size() == 0
           && c.getPrivateFields().size() == 0);
 }
 @Test
 public void testFromComplexString() {
   CacheControl c =
       CacheControl.valueOf(
           "private=\"foo\",no-cache=\"bar\",no-store,no-transform,"
               + "must-revalidate,proxy-revalidate,max-age=2,s-maxage=3");
   assertTrue(
       c.isPrivate()
           && c.isNoStore()
           && c.isMustRevalidate()
           && c.isProxyRevalidate()
           && c.isNoCache());
   assertTrue(
       c.isNoTransform() && c.getNoCacheFields().size() == 1 && c.getPrivateFields().size() == 1);
   assertEquals("foo", c.getPrivateFields().get(0));
   assertEquals("bar", c.getNoCacheFields().get(0));
 }