package com.hubspot.jinjava.lib.fn; import static org.assertj.core.api.Assertions.assertThat; import java.util.Arrays; import java.util.Collections; import org.junit.Test; public class RangeFunctionTest { @Test public void itGeneratesSimpleRanges() { assertThat(Functions.range(1)).isEqualTo(Collections.singletonList(0)); assertThat(Functions.range(2)).isEqualTo(Arrays.asList(0, 1)); assertThat(Functions.range(2, 4)).isEqualTo(Arrays.asList(2, 3)); assertThat(Functions.range("2", "4")).isEqualTo(Arrays.asList(2, 3)); assertThat(Functions.range(2, 8, 2)).isEqualTo(Arrays.asList(2, 4, 6)); } @Test public void itGeneratesBackwardsRanges() { assertThat(Functions.range(2, -1, -1)).isEqualTo(Arrays.asList(2, 1, 0)); assertThat(Functions.range(8, 2, -2)).isEqualTo(Arrays.asList(8, 6, 4)); assertThat(Functions.range(2, -1, "-1")).isEqualTo(Arrays.asList(2, 1, 0)); } @Test public void itHandlesBadRanges() { assertThat(Functions.range(-2)).isEmpty(); assertThat(Functions.range(-2, -4)).isEmpty(); assertThat(Functions.range(-2, -2)).isEmpty(); assertThat(Functions.range(2, 2)).isEmpty(); assertThat(Functions.range(2, 2000, 0)).isEmpty(); assertThat(Functions.range(2, 2000, -5)).isEmpty(); } @Test public void itHandlesBadValues() { assertThat(Functions.range(2, "f")).isEmpty(); } @Test public void itTruncatesHugeRanges() { assertThat(Functions.range(2, 200000000).size()).isEqualTo(Functions.RANGE_LIMIT); } }