Package org.apache.wicket.util.resource

Source Code of org.apache.wicket.util.resource.ResourceTest

/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License.  You may obtain a copy of the License at
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.wicket.util.resource;

import java.io.File;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.Locale;

import org.apache.wicket.WicketTestCase;
import org.apache.wicket.core.util.resource.UrlResourceStream;
import org.apache.wicket.core.util.resource.locator.IResourceStreamLocator;
import org.apache.wicket.core.util.resource.locator.ResourceStreamLocator;
import org.apache.wicket.util.file.Folder;
import org.apache.wicket.util.file.Path;
import org.apache.wicket.util.string.Strings;
import org.junit.Test;


/**
* Resources test.
*
* @author Juergen Donnerstag
*/
public class ResourceTest extends WicketTestCase
{
  private final Locale locale_de = new Locale("de");
  private final Locale locale_de_DE = new Locale("de", "DE");
  private final Locale locale_de_DE_POSIX = new Locale("de", "DE", "POSIX");
  private final Locale locale_de_POSIX = new Locale("de", "", "POSIX");
  private final Locale locale_de_CH = new Locale("de", "CH");

  private final Locale locale_en = new Locale("en");
  private final Locale locale_en_US = new Locale("en", "US");
  private final Locale locale_en_US_WIN = new Locale("en", "US", "WIN");
  private final Locale locale_en_WIN = new Locale("en", "", "WIN");

  private final Locale locale_fr = new Locale("fr");
  private final Locale locale_fr_FR = new Locale("fr", "FR");
  private final Locale locale_fr_FR_WIN = new Locale("fr", "FR", "WIN");
  private final Locale locale_fr_WIN = new Locale("fr", "", "WIN");

  /**
   *
   * @param sourcePath
   * @param style
   * @param variation
   * @param locale
   * @param extension
   */
  public void createAndTestResource(Path sourcePath, String style, String variation,
    Locale locale, String extension)
  {
    IResourceStreamLocator locator = new ResourceStreamLocator(sourcePath);
    IResourceStream resource = locator.locate(this.getClass(), this.getClass()
      .getName()
      .replace('.', '/'), style, variation, locale, "txt", false);
    compareFilename(resource, extension);
  }

  /**
   *
   * @param sourcePath
   */
  public void executeMultiple(Path sourcePath)
  {
    createAndTestResource(sourcePath, null, null, null, "");
    createAndTestResource(sourcePath, "style", null, null, "_style");

    createAndTestResource(sourcePath, null, null, locale_de, "_de");
    createAndTestResource(sourcePath, null, null, locale_de_DE, "_de_DE");
    createAndTestResource(sourcePath, null, null, locale_de_DE_POSIX, "_de_DE_POSIX");
    createAndTestResource(sourcePath, null, null, locale_de_POSIX, "_de__POSIX");
    createAndTestResource(sourcePath, null, null, locale_de_CH, "_de");

    createAndTestResource(sourcePath, "style", null, locale_de, "_style_de");
    createAndTestResource(sourcePath, "style", null, locale_de_DE, "_style_de_DE");
    createAndTestResource(sourcePath, "style", null, locale_de_DE_POSIX, "_style_de_DE_POSIX");
    createAndTestResource(sourcePath, "style", null, locale_de_POSIX, "_style_de__POSIX");
    createAndTestResource(sourcePath, "style", null, locale_de_CH, "_style_de");

    createAndTestResource(sourcePath, null, null, locale_en, "");
    createAndTestResource(sourcePath, null, null, locale_en_US, "");
    createAndTestResource(sourcePath, null, null, locale_en_US_WIN, "");
    createAndTestResource(sourcePath, null, null, locale_en_WIN, "");
    createAndTestResource(sourcePath, "style", null, locale_en_WIN, "_style");

    createAndTestResource(sourcePath, null, null, locale_fr, "_fr");
    createAndTestResource(sourcePath, null, null, locale_fr_FR, "_fr");
    createAndTestResource(sourcePath, null, null, locale_fr_FR_WIN, "_fr");
    createAndTestResource(sourcePath, null, null, locale_fr_WIN, "_fr");
    createAndTestResource(sourcePath, "style", null, locale_fr_WIN, "_style");
  }

  /**
   * Test locating a resource.
   */
  @Test
  public void locate()
  {
    // Execute without source path
    executeMultiple(new Path());

    // Determine source path
    IResourceStreamLocator locator = new ResourceStreamLocator();
    IResourceStream resource = locator.locate(getClass(),
      this.getClass().getName().replace('.', '/'), null, null, null, "txt", false);
    String path = getPath(resource);
    path = Strings.beforeLastPathComponent(path, '/') + "/sourcePath";

    // and execute
    executeMultiple(new Path(new Folder(path)));
  }

  /**
   * Compares the given name with the resource.
   *
   * @param resource
   * @param name
   */
  private void compareFilename(IResourceStream resource, String name)
  {
    assertNotNull("Did not find resource: " + name, resource);

    String filename = Strings.replaceAll(this.getClass().getName(), ".", "/").toString();
    filename += name + ".txt";
    String resourcePath = getPath(resource);

    if (!resourcePath.endsWith(filename))
    {
      filename = Strings.afterLast(filename, '/');
      resourcePath = Strings.afterLast(resourcePath, '/');
      assertEquals("Did not find resource", filename, resourcePath);
    }
  }

  /**
   * Gets the path of the resource as a string.
   *
   * @param resource
   *            the resource
   * @return the path of the resource as a string
   */
  private String getPath(IResourceStream resource)
  {
    try
    {
      URL url = ((UrlResourceStream)resource).getURL();
      CharSequence path = new File(new URI(url.toString())).getPath();
      path = Strings.replaceAll(path, "\\", "/");
      return path.toString();
    }
    catch (URISyntaxException e)
    {
      throw new RuntimeException(e);
    }
  }
}
TOP

Related Classes of org.apache.wicket.util.resource.ResourceTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.