/*
 * 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.commons.vfs2;

import java.util.Properties;

import junit.framework.AssertionFailedError;
import junit.framework.Test;
import junit.framework.TestResult;

public class RunTest {
    public static void main(final String[] args) throws Exception {
        final String ip = "192.168.0.128";

        final Properties props = System.getProperties();
        props.setProperty("test.data.src", "src/test-data");
        props.setProperty("test.basedir", "core/target/test-classes/test-data");
        props.setProperty("test.basedir.res", "test-data");
        props.setProperty("test.policy", "src/test-data/test.policy");
        props.setProperty("test.secure", "false");
        props.setProperty("test.smb.uri", "smb://HOME\\vfsusr:vfs%2f%25\\te:st@" + ip + "/vfsusr/vfstest");
        props.setProperty("test.ftp.uri", "ftp://vfsusr:vfs%2f%25\\te:st@" + ip + "/vfstest");
        props.setProperty("test.ftps.uri", "ftps://vfsusr:vfs%2f%25\\te:st@" + ip + "/vfstest");

        props.setProperty("test.http.uri", "http://" + ip + "/vfstest");
        //props.setProperty("test.webdav.uri", "webdav://vfsusr:vfs%2f%25\\te:st@" + ip + "/vfstest");
        props.setProperty("test.sftp.uri", "sftp://vfsusr:vfs%2f%25\\te:st@" + ip + "/vfstest");

        final Test[] tests = new Test[] {
                // LocalProviderTestCase.suite(),
                // FtpProviderTestCase.suite(),
                // UrlProviderHttpTestCase.suite(),
                // VirtualProviderTestCase.suite(),
                // TemporaryProviderTestCase.suite(),
                // UrlProviderTestCase.suite(),
                // ResourceProviderTestCase.suite(),
                // HttpProviderTestCase.suite(),
                // AbstractSftpProviderTestCase.suite(),
                // JarProviderTestCase.suite(),
                // NestedJarTestCase.suite(),
                // ZipProviderTestCase.suite(),
                // NestedZipTestCase.suite(),
                // TarProviderTestCase.suite(),
                // TgzProviderTestCase.suite(),
                // Tbz2ProviderTestCase.suite(),
                // NestedTarTestCase.suite(),
                // NestedTgzTestCase.suite(),
                // NestedTbz2TestCase.suite(),
                // RamProviderTestCase.suite(),

                // SmbProviderTestCase.suite(),
                // WebdavProviderTestCase.suite(),
        };

        final TestResult result = new TestResult() {
            @Override
            public synchronized void addError(final Test test, final Throwable throwable) {
                // throw new RuntimeException(throwable.getMessage());
                throwable.printStackTrace();
            }

            @Override
            public synchronized void addFailure(final Test test, final AssertionFailedError assertionFailedError) {
                // throw new RuntimeException(assertionFailedError.getMessage());
                assertionFailedError.printStackTrace();
            }

            @Override
            public void endTest(final Test test) {
                // System.err.println("end " + test);
            }

            @Override
            public void startTest(final Test test) {
                System.out.println("start " + test);
                System.out.flush();
            }
        };

        for (int i = 0; i < tests.length; i++) {
            System.out.println("start test#" + i);
            System.out.flush();

            final Test test = tests[i];
            test.run(result);

            // break;
        }
    }
}
