// Path: src/main/java/br/com/trustsystems/elfinder/exception/VolumeSourceException.java
// public class VolumeSourceException extends RuntimeException {
// 
//     private static final long serialVersionUID = -2443056237600812799L;
// 
//     /**
//      * Constructs a new runtime exception with {@code null} as its
//      * detail message.  The cause is not initialized, and may subsequently be
//      * initialized by a call to {@link #initCause}.
//      */
//     public VolumeSourceException() {
//         super();
//     }
// 
//     /**
//      * Constructs a new runtime exception with the specified detail message.
//      * The cause is not initialized, and may subsequently be initialized by a
//      * call to {@link #initCause}.
//      *
//      * @param message the detail message. The detail message is saved for
//      *                later retrieval by the {@link #getMessage()} method.
//      */
//     public VolumeSourceException(String message) {
//         super(message);
//     }
// 
//     /**
//      * Constructs a new runtime exception with the specified detail message and
//      * cause.  <p>Note that the detail message associated with
//      * {@code cause} is <i>not</i> automatically incorporated in
//      * this runtime exception's detail message.
//      *
//      * @param message the detail message (which is saved for later retrieval
//      *                by the {@link #getMessage()} method).
//      * @param cause   the cause (which is saved for later retrieval by the
//      *                {@link #getCause()} method).  (A <tt>null</tt> value is
//      *                permitted, and indicates that the cause is nonexistent or
//      *                unknown.)
//      * @since 1.4
//      */
//     public VolumeSourceException(String message, Throwable cause) {
//         super(message, cause);
//     }
// 
//     /**
//      * Constructs a new runtime exception with the specified cause and a
//      * detail message of <tt>(cause==null ? null : cause.toString())</tt>
//      * (which typically contains the class and detail message of
//      * <tt>cause</tt>).  This constructor is useful for runtime exceptions
//      * that are little more than wrappers for other throwables.
//      *
//      * @param cause the cause (which is saved for later retrieval by the
//      *              {@link #getCause()} method).  (A <tt>null</tt> value is
//      *              permitted, and indicates that the cause is nonexistent or
//      *              unknown.)
//      * @since 1.4
//      */
//     public VolumeSourceException(Throwable cause) {
//         super(cause);
//     }
// 
//     /**
//      * Constructs a new runtime exception with the specified detail
//      * message, cause, suppression enabled or disabled, and writable
//      * stack trace enabled or disabled.
//      *
//      * @param message            the detail message.
//      * @param cause              the cause.  (A {@code null} value is permitted,
//      *                           and indicates that the cause is nonexistent or unknown.)
//      * @param enableSuppression  whether or not suppression is enabled
//      *                           or disabled
//      * @param writableStackTrace whether or not the stack trace should
//      *                           be writable
//      * @since 1.7
//      */
//     protected VolumeSourceException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
//         super(message, cause, enableSuppression, writableStackTrace);
//     }
// }


import br.com.trustsystems.elfinder.exception.VolumeSourceException;
import org.testng.Assert;
import org.testng.annotations.Test;
/*
 * #%L
 * %%
 * Copyright (C) 2015 Trustsystems Desenvolvimento de Sistemas, LTDA.
 * %%
 * Redistribution and use in source and binary forms, with or without modification,
 * are permitted provided that the following conditions are met:
 * 
 * 1. Redistributions of source code must retain the above copyright notice, this
 *    list of conditions and the following disclaimer.
 * 
 * 2. Redistributions in binary form must reproduce the above copyright notice,
 *    this list of conditions and the following disclaimer in the documentation
 *    and/or other materials provided with the distribution.
 * 
 * 3. Neither the name of the Trustsystems Desenvolvimento de Sistemas, LTDA. nor the names of its contributors
 *    may be used to endorse or promote products derived from this software without
 *    specific prior written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
 * OF THE POSSIBILITY OF SUCH DAMAGE.
 * #L%
 */
package br.com.trustsystems.elfinder.service;


/**
 * Volume Sources Test.
 *
 * @author Thiago Gutenberg Carvalho da Costa
 */
public class VolumeSourcesTest {

    @Test
    public void normalizeSource() {
        String[] sources = {"FILESYSTEM", "filesystem", "FileSystem", " File System", "file_system", "file-        system"};
        Assert.assertNotNull(sources);
        for (String source : sources) {
            Assert.assertEquals(VolumeSources.of(source), VolumeSources.FILESYSTEM);
        }
    }

// Path: src/main/java/br/com/trustsystems/elfinder/exception/VolumeSourceException.java
// public class VolumeSourceException extends RuntimeException {
// 
//     private static final long serialVersionUID = -2443056237600812799L;
// 
//     /**
//      * Constructs a new runtime exception with {@code null} as its
//      * detail message.  The cause is not initialized, and may subsequently be
//      * initialized by a call to {@link #initCause}.
//      */
//     public VolumeSourceException() {
//         super();
//     }
// 
//     /**
//      * Constructs a new runtime exception with the specified detail message.
//      * The cause is not initialized, and may subsequently be initialized by a
//      * call to {@link #initCause}.
//      *
//      * @param message the detail message. The detail message is saved for
//      *                later retrieval by the {@link #getMessage()} method.
//      */
//     public VolumeSourceException(String message) {
//         super(message);
//     }
// 
//     /**
//      * Constructs a new runtime exception with the specified detail message and
//      * cause.  <p>Note that the detail message associated with
//      * {@code cause} is <i>not</i> automatically incorporated in
//      * this runtime exception's detail message.
//      *
//      * @param message the detail message (which is saved for later retrieval
//      *                by the {@link #getMessage()} method).
//      * @param cause   the cause (which is saved for later retrieval by the
//      *                {@link #getCause()} method).  (A <tt>null</tt> value is
//      *                permitted, and indicates that the cause is nonexistent or
//      *                unknown.)
//      * @since 1.4
//      */
//     public VolumeSourceException(String message, Throwable cause) {
//         super(message, cause);
//     }
// 
//     /**
//      * Constructs a new runtime exception with the specified cause and a
//      * detail message of <tt>(cause==null ? null : cause.toString())</tt>
//      * (which typically contains the class and detail message of
//      * <tt>cause</tt>).  This constructor is useful for runtime exceptions
//      * that are little more than wrappers for other throwables.
//      *
//      * @param cause the cause (which is saved for later retrieval by the
//      *              {@link #getCause()} method).  (A <tt>null</tt> value is
//      *              permitted, and indicates that the cause is nonexistent or
//      *              unknown.)
//      * @since 1.4
//      */
//     public VolumeSourceException(Throwable cause) {
//         super(cause);
//     }
// 
//     /**
//      * Constructs a new runtime exception with the specified detail
//      * message, cause, suppression enabled or disabled, and writable
//      * stack trace enabled or disabled.
//      *
//      * @param message            the detail message.
//      * @param cause              the cause.  (A {@code null} value is permitted,
//      *                           and indicates that the cause is nonexistent or unknown.)
//      * @param enableSuppression  whether or not suppression is enabled
//      *                           or disabled
//      * @param writableStackTrace whether or not the stack trace should
//      *                           be writable
//      * @since 1.7
//      */
//     protected VolumeSourceException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
//         super(message, cause, enableSuppression, writableStackTrace);
//     }
// }


// Path: src/test/java/br/com/trustsystems/elfinder/service/VolumeSourcesTest.java
import br.com.trustsystems.elfinder.exception.VolumeSourceException;
import org.testng.Assert;
import org.testng.annotations.Test;

/*
 * #%L
 * %%
 * Copyright (C) 2015 Trustsystems Desenvolvimento de Sistemas, LTDA.
 * %%
 * Redistribution and use in source and binary forms, with or without modification,
 * are permitted provided that the following conditions are met:
 * 
 * 1. Redistributions of source code must retain the above copyright notice, this
 *    list of conditions and the following disclaimer.
 * 
 * 2. Redistributions in binary form must reproduce the above copyright notice,
 *    this list of conditions and the following disclaimer in the documentation
 *    and/or other materials provided with the distribution.
 * 
 * 3. Neither the name of the Trustsystems Desenvolvimento de Sistemas, LTDA. nor the names of its contributors
 *    may be used to endorse or promote products derived from this software without
 *    specific prior written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
 * OF THE POSSIBILITY OF SUCH DAMAGE.
 * #L%
 */
package br.com.trustsystems.elfinder.service;


/**
 * Volume Sources Test.
 *
 * @author Thiago Gutenberg Carvalho da Costa
 */
public class VolumeSourcesTest {

    @Test
    public void normalizeSource() {
        String[] sources = {"FILESYSTEM", "filesystem", "FileSystem", " File System", "file_system", "file-        system"};
        Assert.assertNotNull(sources);
        for (String source : sources) {
            Assert.assertEquals(VolumeSources.of(source), VolumeSources.FILESYSTEM);
        }
    }

    @Test(expectedExceptions = VolumeSourceException.class)