Package rabbit.data.internal.xml

Source Code of rabbit.data.internal.xml.XmlPluginTest

/*
* Copyright 2010 The Rabbit Eclipse Plug-in Project
*
* Licensed 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 rabbit.data.internal.xml;

import static com.google.common.collect.Sets.newHashSet;

import com.google.common.base.Function;
import com.google.common.collect.Collections2;
import com.google.common.collect.Sets;

import static org.hamcrest.CoreMatchers.equalTo;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
import static org.junit.matchers.JUnitMatchers.hasItem;

import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.junit.Test;

import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.util.Collection;
import java.util.Set;

/**
* Test for {@link XmlPlugin}
*/
public class XmlPluginTest {

  private static XmlPlugin plugin = XmlPlugin.getDefault();

  @Test
  public void getStoragePropertyStringShouldReturnTheCorrectString() {
    String expected = "_ws_ccc";
    IPath path = new Path("/a/b/ccc");
    assertThat(plugin.getStoragePropertyString(path), equalTo(expected));
  }

  @Test
  public void getStoragePathShouldReturnTheCurrentStoragePath() {
    assertNotNull(plugin.getStoragePath());
    assertTrue(plugin.getStoragePath().toFile().exists());
    assertTrue(plugin.getStoragePath().toFile().isDirectory());
  }

  @Test
  public void getStoragePathRootShouldReturnTheParentOfTheStoragePath() {
    assertThat(plugin.getStoragePathRoot(),
        equalTo(plugin.getStoragePath().removeLastSegments(1)));
  }

  @Test
  public void thePluginIdShouldEqualToTheBundleSymbolicName() {
    assertEquals(XmlPlugin.PLUGIN_ID, plugin.getBundle().getSymbolicName());
  }

  @Test
  public void setStoragePathRootTests() throws IOException {
    IPath oldPath = plugin.getStoragePathRoot();
    try {
      IPath path = oldPath.append(System.currentTimeMillis() + "");

      File file = path.toFile();

      // File not exist, should return false:
      assertFalse(file.exists());
      assertFalse(plugin.setStoragePathRoot(file));

      // File exists, readable, writable, should return true:
      assertTrue(file.mkdirs());
      assertTrue(file.setReadable(true));
      assertTrue(file.setWritable(true));
      assertTrue(plugin.setStoragePathRoot(file));
    } finally {
      plugin.setStoragePathRoot(oldPath.toFile());
    }
  }

  @Test
  public void testStoragePaths() {
    Collection<IPath> paths = newHashSet(plugin.getStoragePaths());
    assertThat(paths, hasItem(plugin.getStoragePath()));

    File root = plugin.getStoragePathRoot().toFile();
    Set<File> files = Sets.newHashSet(root.listFiles(new FileFilter() {
      @Override
      public boolean accept(File file) {
        return file.isDirectory();
      }
    }));
    files.add(plugin.getStoragePath().toFile());
    paths = Collections2.transform(files, new Function<File, IPath>() {
      @Override
      public IPath apply(File input) {
        return Path.fromOSString(input.getAbsolutePath());
      }
    });

    assertThat(newHashSet(plugin.getStoragePaths()), equalTo(newHashSet(paths)));
  }
}
TOP

Related Classes of rabbit.data.internal.xml.XmlPluginTest

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.