// Dstl (c) Crown Copyright 2017
package uk.gov.dstl.baleen.consumers.utils;

import static org.junit.Assert.assertEquals;

import java.io.File;

import org.junit.Test;

public class SourceUtilsTest {
  private File base = new File("my/path");

  @Test
  public void testUrl() {
    File fExpected = new File("my/path/www.example.com/test/page.html");
    assertEquals(fExpected, SourceUtils.urlToFile(base, "http://www.example.com/test/page.html"));
    assertEquals(fExpected, SourceUtils.urlToFile(base, "https://www.example.com/test/page.html"));
    assertEquals(fExpected, SourceUtils.urlToFile(base, "ftp://www.example.com/test/page.html"));

    assertEquals(
        new File("my/path/www.example.com/page.html"),
        SourceUtils.urlToFile(base, "http://www.example.com/page.html"));
    assertEquals(
        new File("my/path/www.example.com/test/subdir/page.html"),
        SourceUtils.urlToFile(base, "http://www.example.com/test/subdir/page.html"));

    assertEquals(
        new File("my/path/http_not_url/page.txt"),
        SourceUtils.urlToFile(base, "http_not_url/page.txt"));
  }

  @Test
  public void testNoBase() {
    assertEquals(
        new File("www.example.com/page.html"),
        SourceUtils.urlToFile(null, "http://www.example.com/page.html"));
  }

  @Test
  public void testNetwork() {
    assertEquals(
        new File("my/path/network_drive/this/is/my/file.html"),
        SourceUtils.urlToFile(base, "\\\\network_drive\\this\\is\\my\\file.html"));
  }

  @Test
  public void testWindowsFile() {
    assertEquals(
        new File("my/path/this/is/my/file.html"),
        SourceUtils.urlToFile(base, "C:\\this\\is\\my\\file.html"));
  }

  @Test
  public void testOther() {
    assertEquals(
        new File("my/path/something_else.txt"), SourceUtils.urlToFile(base, "something_else.txt"));
  }
}
