content: package btools.routingapp;
  
  import static org.hamcrest.MatcherAssert.assertThat;
  import static org.hamcrest.core.Is.is;
  
  import android.content.Context;
  
  import androidx.test.core.app.ApplicationProvider;
  import androidx.test.ext.junit.runners.AndroidJUnit4;
  import androidx.work.Data;
  import androidx.work.ListenableWorker.Result;
  import androidx.work.testing.TestWorkerBuilder;
  
  import org.junit.Before;
  import org.junit.Test;
  import org.junit.runner.RunWith;
  
  import java.util.concurrent.Executor;
  import java.util.concurrent.Executors;
  
  @RunWith(AndroidJUnit4.class)
  public class DownloadWorkerTest {
    private Context context;
    private Executor executor;
  
    @Before
    public void setUp() {
      context = ApplicationProvider.getApplicationContext();
      executor = Executors.newSingleThreadExecutor();
    }
  
    @Test
    public void testDownloadNewFile() {
      Data inputData = new Data.Builder()
        .putStringArray(DownloadWorker.KEY_INPUT_SEGMENT_NAMES, new String[]{"E105_N50"})
        .build();
  
      DownloadWorker worker =
        TestWorkerBuilder.from(context, DownloadWorker.class, executor)
          .setInputData(inputData)
          .build();
  
      Result result = worker.doWork();
      assertThat(result, is(Result.success()));
    }
  
    @Test
    public void testDownloadInvalidSegment() {
      Data inputData = new Data.Builder()
        .putStringArray(DownloadWorker.KEY_INPUT_SEGMENT_NAMES, new String[]{"X00"})
        .build();
  
      DownloadWorker worker =
        TestWorkerBuilder.from(context, DownloadWorker.class, executor)
          .setInputData(inputData)
          .build();
  
      Result result = worker.doWork();
      assertThat(result, is(Result.failure()));
    }
  
    @Test
    public void testDownloadNoSegments() {
      DownloadWorker worker =
        TestWorkerBuilder.from(context, DownloadWorker.class, executor)
          .build();
  
      Result result = worker.doWork();
      assertThat(result, is(Result.failure()));
    }
  }
  