// Path: src/main/java/com/tngtech/propertyloader/exception/PropertyLoaderException.java
// public class PropertyLoaderException extends RuntimeException {
// 
//     public PropertyLoaderException(String message) {
//         super(message);
//     }
// }
// 
// Path: src/main/java/com/tngtech/propertyloader/impl/helpers/HostsHelper.java
// public class HostsHelper {
// 
//     public List<String> getLocalHostNames() {
//         Set<String> hostSet = new HashSet<String>();
// 
//         for (InetAddress host : getLocalHosts()) {
//             hostSet.add(host.getHostName());
//         }
// 
//         List<String> hostNames = new ArrayList<String>(hostSet);
//         Collections.sort(hostNames);
// 
//         return hostNames;
//     }
// 
//     private InetAddress[] getLocalHosts() {
//         InetAddress in;
// 
//         try {
//             in = InetAddress.getLocalHost();
//         } catch (UnknownHostException uE) {
//             return new InetAddress[0];
//         }
// 
//         try {
//             return InetAddress.getAllByName(in.getHostName());
//         } catch (UnknownHostException uE) {
//             return new InetAddress[]{in};
//         }
//     }
// }
// 
// Path: src/main/java/com/tngtech/propertyloader/impl/helpers/PropertyFileNameHelper.java
// public class PropertyFileNameHelper {
//     public List<String> getFileNames(Collection<String> baseNames, Collection<String> suffixes, String fileExtension) {
//         List<String> fileNameList = new ArrayList<String>();
//         for (String baseName : baseNames) {
//             fileNameList.add(baseName + "." + fileExtension);
//             for (String suffix : suffixes) {
//                 fileNameList.add(baseName + "." + suffix + "." + fileExtension);
//             }
//         }
//         return fileNameList;
//     }
// }
// 
// Path: src/main/java/com/tngtech/propertyloader/impl/interfaces/PropertyLoaderOpener.java
// public interface PropertyLoaderOpener {
// 
//     /**
//      * Attempt to find and open some property file.
//      *
//      * @param fileName A relative filename (using '/' as directory separator on all platforms)
//      * @return An input stream reading from that file, or null if the file could not be found
//      */
//     InputStream open(String fileName);
// }


import com.tngtech.propertyloader.exception.PropertyLoaderException;
import com.tngtech.propertyloader.impl.*;
import com.tngtech.propertyloader.impl.helpers.HostsHelper;
import com.tngtech.propertyloader.impl.helpers.PropertyFileNameHelper;
import com.tngtech.propertyloader.impl.interfaces.PropertyLoaderOpener;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.ArgumentMatchers;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import java.io.File;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Properties;
import java.util.Stack;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
package com.tngtech.propertyloader;





@RunWith(MockitoJUnitRunner.class)
public class PropertyLoaderTest {

    @InjectMocks
    private PropertyLoader propertyLoader;
    @Mock
    private PropertyLoaderFactory propertyLoaderFactory;
    @Mock
// Path: src/main/java/com/tngtech/propertyloader/exception/PropertyLoaderException.java
// public class PropertyLoaderException extends RuntimeException {
// 
//     public PropertyLoaderException(String message) {
//         super(message);
//     }
// }
// 
// Path: src/main/java/com/tngtech/propertyloader/impl/helpers/HostsHelper.java
// public class HostsHelper {
// 
//     public List<String> getLocalHostNames() {
//         Set<String> hostSet = new HashSet<String>();
// 
//         for (InetAddress host : getLocalHosts()) {
//             hostSet.add(host.getHostName());
//         }
// 
//         List<String> hostNames = new ArrayList<String>(hostSet);
//         Collections.sort(hostNames);
// 
//         return hostNames;
//     }
// 
//     private InetAddress[] getLocalHosts() {
//         InetAddress in;
// 
//         try {
//             in = InetAddress.getLocalHost();
//         } catch (UnknownHostException uE) {
//             return new InetAddress[0];
//         }
// 
//         try {
//             return InetAddress.getAllByName(in.getHostName());
//         } catch (UnknownHostException uE) {
//             return new InetAddress[]{in};
//         }
//     }
// }
// 
// Path: src/main/java/com/tngtech/propertyloader/impl/helpers/PropertyFileNameHelper.java
// public class PropertyFileNameHelper {
//     public List<String> getFileNames(Collection<String> baseNames, Collection<String> suffixes, String fileExtension) {
//         List<String> fileNameList = new ArrayList<String>();
//         for (String baseName : baseNames) {
//             fileNameList.add(baseName + "." + fileExtension);
//             for (String suffix : suffixes) {
//                 fileNameList.add(baseName + "." + suffix + "." + fileExtension);
//             }
//         }
//         return fileNameList;
//     }
// }
// 
// Path: src/main/java/com/tngtech/propertyloader/impl/interfaces/PropertyLoaderOpener.java
// public interface PropertyLoaderOpener {
// 
//     /**
//      * Attempt to find and open some property file.
//      *
//      * @param fileName A relative filename (using '/' as directory separator on all platforms)
//      * @return An input stream reading from that file, or null if the file could not be found
//      */
//     InputStream open(String fileName);
// }


// Path: src/test/java/com/tngtech/propertyloader/PropertyLoaderTest.java
import com.tngtech.propertyloader.exception.PropertyLoaderException;
import com.tngtech.propertyloader.impl.*;
import com.tngtech.propertyloader.impl.helpers.HostsHelper;
import com.tngtech.propertyloader.impl.helpers.PropertyFileNameHelper;
import com.tngtech.propertyloader.impl.interfaces.PropertyLoaderOpener;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.ArgumentMatchers;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import java.io.File;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Properties;
import java.util.Stack;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

package com.tngtech.propertyloader;





@RunWith(MockitoJUnitRunner.class)
public class PropertyLoaderTest {

    @InjectMocks
    private PropertyLoader propertyLoader;
    @Mock
    private PropertyLoaderFactory propertyLoaderFactory;
    @Mock
    private PropertyFileNameHelper propertyFileNameHelper;