diff options
Diffstat (limited to 'app/src/androidTest/java/it/niedermann/nextcloud')
5 files changed, 186 insertions, 124 deletions
diff --git a/app/src/androidTest/java/it/niedermann/nextcloud/deck/util/AttachmentUtilTest.java b/app/src/androidTest/java/it/niedermann/nextcloud/deck/util/AttachmentUtilTest.java new file mode 100644 index 000000000..a72f74ec1 --- /dev/null +++ b/app/src/androidTest/java/it/niedermann/nextcloud/deck/util/AttachmentUtilTest.java @@ -0,0 +1,50 @@ +package it.niedermann.nextcloud.deck.util; + +import androidx.test.ext.junit.runners.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import it.niedermann.nextcloud.deck.model.Attachment; +import it.niedermann.nextcloud.deck.model.ocs.Version; + +import static org.junit.Assert.assertEquals; + +@RunWith(AndroidJUnit4.class) +public class AttachmentUtilTest { + + @Test + public void testGetThumbnailUrl() { + final Version versionThatDoesSupportFileAttachments = new Version("1.3.0", 1, 3, 0); + final Version versionThatDoesNotSupportFileAttachments = new Version("1.2.0", 1, 2, 0); + final String accountUrl = "https://example.com"; + + // TODO depends on https://github.com/nextcloud/deck/pull/2638 +// final Attachment attachment1 = new Attachment(); +// attachment1.setFileId("1337"); +// final String thumbnailUrl1 = AttachmentUtil.getThumbnailUrl(versionThatDoesSupportFileAttachments, accountUrl, -1L, attachment1, 500); +// assertEquals("https://example.com/index.php/core/preview?fileId=1337&x=500&y=500", thumbnailUrl1); +// +// final Attachment attachment2 = new Attachment(); +// attachment2.setFileId("0815"); +// final String thumbnailUrl2 = AttachmentUtil.getThumbnailUrl(versionThatDoesSupportFileAttachments, accountUrl, 0L, attachment2, 4711); +// assertEquals("https://example.com/index.php/core/preview?fileId=0815&x=4711&y=4711", thumbnailUrl2); + + // Given there is an invalid fileId... + final Attachment attachment3 = new Attachment(); + attachment3.setId(999L); + attachment3.setFileId(""); + final String thumbnailUrl3 = AttachmentUtil.getThumbnailUrl(versionThatDoesSupportFileAttachments, accountUrl, 15L, attachment3, 205); + // ... a fallback to the attachment itself should be returned + assertEquals("https://example.com/index.php/apps/deck/cards/15/attachment/999", thumbnailUrl3); + + // Given the server version does not support file attachments yet... + final Attachment attachment4 = new Attachment(); + attachment4.setId(111L); + attachment4.setFileId("222"); + final String thumbnailUrl4 = AttachmentUtil.getThumbnailUrl(versionThatDoesNotSupportFileAttachments, accountUrl, 333L, attachment4, 444); + // ... a fallback to the attachment itself should be returned + assertEquals("https://example.com/index.php/apps/deck/cards/333/attachment/111", thumbnailUrl4); + } + +} diff --git a/app/src/androidTest/java/it/niedermann/nextcloud/deck/util/ColorUtilTest.java b/app/src/androidTest/java/it/niedermann/nextcloud/deck/util/ColorUtilTest.java deleted file mode 100644 index afc09e762..000000000 --- a/app/src/androidTest/java/it/niedermann/nextcloud/deck/util/ColorUtilTest.java +++ /dev/null @@ -1,124 +0,0 @@ -package it.niedermann.nextcloud.deck.util; - -import android.graphics.Color; - -import androidx.annotation.ColorInt; -import androidx.core.util.Pair; -import androidx.test.ext.junit.runners.AndroidJUnit4; - -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; -import org.junit.runner.RunWith; - -import java.util.ArrayList; -import java.util.List; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - -@RunWith(AndroidJUnit4.class) -public class ColorUtilTest { - - @ColorInt - private static final int[] DARK_COLORS = new int[]{ - Color.BLACK, - Color.parseColor("#0082C9"), // "Nextcloud-Blue" - Color.parseColor("#007676") - }; - - @ColorInt - private static final int[] LIGHT_COLORS = new int[]{ - Color.WHITE, - Color.YELLOW - }; - - @Test - public void testGetForegroundColorForBackgroundColor() { - for (@ColorInt int color : DARK_COLORS) { - assertEquals( - "Expect foreground color for " + String.format("#%06X", (0xFFFFFF & color)) + " to be " + String.format("#%06X", (0xFFFFFF & Color.WHITE)), - Color.WHITE, ColorUtil.getForegroundColorForBackgroundColor(color) - ); - } - for (@ColorInt int color : LIGHT_COLORS) { - assertEquals( - "Expect foreground color for " + String.format("#%06X", (0xFFFFFF & color)) + " to be " + String.format("#%06X", (0xFFFFFF & Color.BLACK)), - Color.BLACK, ColorUtil.getForegroundColorForBackgroundColor(color) - ); - } - assertEquals( - "Expect foreground color for " + String.format("#%06X", (0xFFFFFF & Color.TRANSPARENT)) + " to be " + String.format("#%06X", (0xFFFFFF & Color.BLACK)), - Color.BLACK, ColorUtil.getForegroundColorForBackgroundColor(Color.TRANSPARENT) - ); - } - - @Test - public void testIsColorDark() { - for (@ColorInt int color : DARK_COLORS) { - assertTrue( - "Expect " + String.format("#%06X", (0xFFFFFF & color)) + " to be a dark color", - ColorUtil.isColorDark(color) - ); - } - for (@ColorInt int color : LIGHT_COLORS) { - assertFalse( - "Expect " + String.format("#%06X", (0xFFFFFF & color)) + " to be a light color", - ColorUtil.isColorDark(color) - ); - } - } - - @Test - public void testContrastRatioIsSufficient() { - final List<Pair<Integer, Integer>> sufficientContrastColorPairs = new ArrayList<>(); - sufficientContrastColorPairs.add(new Pair<>(Color.BLACK, Color.WHITE)); - sufficientContrastColorPairs.add(new Pair<>(Color.WHITE, Color.parseColor("#0082C9"))); - - for (Pair<Integer, Integer> colorPair : sufficientContrastColorPairs) { - assert colorPair.first != null; - assert colorPair.second != null; - assertTrue( - "Expect contrast between " + String.format("#%06X", (0xFFFFFF & colorPair.first)) + " and " + String.format("#%06X", (0xFFFFFF & colorPair.second)) + " to be sufficient", - ColorUtil.contrastRatioIsSufficient(colorPair.first, colorPair.second) - ); - } - - final List<Pair<Integer, Integer>> insufficientContrastColorPairs = new ArrayList<>(); - insufficientContrastColorPairs.add(new Pair<>(Color.WHITE, Color.WHITE)); - insufficientContrastColorPairs.add(new Pair<>(Color.BLACK, Color.BLACK)); - - for (Pair<Integer, Integer> colorPair : insufficientContrastColorPairs) { - assert colorPair.first != null; - assert colorPair.second != null; - assertFalse( - "Expect contrast between " + String.format("#%06X", (0xFFFFFF & colorPair.first)) + " and " + String.format("#%06X", (0xFFFFFF & colorPair.second)) + " to be insufficient", - ColorUtil.contrastRatioIsSufficient(colorPair.first, colorPair.second) - ); - } - } - - @Rule - public final ExpectedException exception = ExpectedException.none(); - - @Test - public void testGetCleanHexaColorString() { - final List<Pair<String, String>> validColors = new ArrayList<>(); - validColors.add(new Pair<>("#0082C9", "#0082C9")); - validColors.add(new Pair<>("0082C9", "#0082C9")); - validColors.add(new Pair<>("#CCC", "#CCCCCC")); - validColors.add(new Pair<>("ccc", "#cccccc")); - validColors.add(new Pair<>("af0", "#aaff00")); - validColors.add(new Pair<>("#af0", "#aaff00")); - for (Pair<String, String> color : validColors) { - assertEquals("Expect " + color.first + " to be cleaned up to " + color.second, color.second, ColorUtil.formatColorToParsableHexString(color.first)); - } - - final String[] invalidColors = new String[]{null, "", "cc", "c", "#a", "#55L", "55L"}; - for (String color : invalidColors) { - exception.expect(IllegalArgumentException.class); - ColorUtil.formatColorToParsableHexString(color); - } - } -} diff --git a/app/src/androidTest/java/it/niedermann/nextcloud/deck/util/DateUtilTest.java b/app/src/androidTest/java/it/niedermann/nextcloud/deck/util/DateUtilTest.java new file mode 100644 index 000000000..845275122 --- /dev/null +++ b/app/src/androidTest/java/it/niedermann/nextcloud/deck/util/DateUtilTest.java @@ -0,0 +1,35 @@ +package it.niedermann.nextcloud.deck.util; + +import android.content.Context; + +import androidx.test.ext.junit.runners.AndroidJUnit4; +import androidx.test.platform.app.InstrumentationRegistry; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import java.time.Duration; +import java.time.ZoneId; +import java.time.ZonedDateTime; +import java.util.stream.Stream; + +import static org.junit.Assert.assertEquals; + +@RunWith(AndroidJUnit4.class) +public class DateUtilTest { + + @Test + public void testGetRelativeDateTimeString() { + Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); + Stream.of(10, 20, 30, 40, 50) + .map(secondsAgo -> ZonedDateTime.now().minus(Duration.ofSeconds(secondsAgo)).toInstant().toEpochMilli()) + .forEach(secondsAgoInMillis -> assertEquals("Below one minute diff, it should just print \"seconds\"", "seconds ago", DateUtil.getRelativeDateTimeString(appContext, secondsAgoInMillis))); + + Stream.of(10, 20, 30, 40, 50) + .forEach(minutesAgo -> assertEquals("Minutes ago should print the minutes", minutesAgo + " minutes ago", DateUtil.getRelativeDateTimeString(appContext, ZonedDateTime.now().minus(Duration.ofMinutes(minutesAgo)).toInstant().toEpochMilli()))); + + assertEquals("Very long time ago should print the complete date", "4/13/2018", DateUtil.getRelativeDateTimeString(appContext, ZonedDateTime.of(2018, + 4, 13, 10, 45, 0, 0, ZoneId.systemDefault()).toInstant().toEpochMilli())); + } + +} diff --git a/app/src/androidTest/java/it/niedermann/nextcloud/deck/util/DeckColorUtilTest.java b/app/src/androidTest/java/it/niedermann/nextcloud/deck/util/DeckColorUtilTest.java new file mode 100644 index 000000000..10ac5cdc9 --- /dev/null +++ b/app/src/androidTest/java/it/niedermann/nextcloud/deck/util/DeckColorUtilTest.java @@ -0,0 +1,49 @@ +package it.niedermann.nextcloud.deck.util; + +import android.graphics.Color; + +import androidx.core.util.Pair; +import androidx.test.ext.junit.runners.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import java.util.ArrayList; +import java.util.List; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +@RunWith(AndroidJUnit4.class) +public class DeckColorUtilTest { + + @Test + public void testContrastRatioIsSufficient() { + final List<Pair<Integer, Integer>> sufficientContrastColorPairs = new ArrayList<>(); + sufficientContrastColorPairs.add(new Pair<>(Color.BLACK, Color.WHITE)); + sufficientContrastColorPairs.add(new Pair<>(Color.WHITE, Color.parseColor("#0082C9"))); + + for (Pair<Integer, Integer> colorPair : sufficientContrastColorPairs) { + assert colorPair.first != null; + assert colorPair.second != null; + assertTrue( + "Expect contrast between " + String.format("#%06X", (0xFFFFFF & colorPair.first)) + " and " + String.format("#%06X", (0xFFFFFF & colorPair.second)) + " to be sufficient", + DeckColorUtil.contrastRatioIsSufficient(colorPair.first, colorPair.second) + ); + } + + final List<Pair<Integer, Integer>> insufficientContrastColorPairs = new ArrayList<>(); + insufficientContrastColorPairs.add(new Pair<>(Color.WHITE, Color.WHITE)); + insufficientContrastColorPairs.add(new Pair<>(Color.BLACK, Color.BLACK)); + + for (Pair<Integer, Integer> colorPair : insufficientContrastColorPairs) { + assert colorPair.first != null; + assert colorPair.second != null; + assertFalse( + "Expect contrast between " + String.format("#%06X", (0xFFFFFF & colorPair.first)) + " and " + String.format("#%06X", (0xFFFFFF & colorPair.second)) + " to be insufficient", + DeckColorUtil.contrastRatioIsSufficient(colorPair.first, colorPair.second) + ); + } + } + +} diff --git a/app/src/androidTest/java/it/niedermann/nextcloud/deck/util/SpannableUtilTest.java b/app/src/androidTest/java/it/niedermann/nextcloud/deck/util/SpannableUtilTest.java new file mode 100644 index 000000000..1797bc405 --- /dev/null +++ b/app/src/androidTest/java/it/niedermann/nextcloud/deck/util/SpannableUtilTest.java @@ -0,0 +1,52 @@ +package it.niedermann.nextcloud.deck.util; + +import android.content.Context; +import android.graphics.Typeface; +import android.text.SpannableString; +import android.text.style.ForegroundColorSpan; +import android.text.style.StyleSpan; +import android.text.style.URLSpan; + +import androidx.test.ext.junit.runners.AndroidJUnit4; +import androidx.test.platform.app.InstrumentationRegistry; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.assertEquals; + +@RunWith(AndroidJUnit4.class) +public class SpannableUtilTest { + + @Test + public void testStrong() { + final SpannableString spannableString = SpannableUtil.strong("test"); + assertEquals(1, spannableString.getSpans(0, spannableString.length(), Object.class).length); + assertEquals(1, spannableString.getSpans(0, spannableString.length(), StyleSpan.class).length); + assertEquals(4, spannableString.length()); + assertEquals(Typeface.BOLD, spannableString.getSpans(0, spannableString.length(), StyleSpan.class)[0].getStyle()); + } + + @Test + public void testDisabled() { + final Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); + + final SpannableString spannableString = SpannableUtil.disabled("test", appContext); + assertEquals(2, spannableString.getSpans(0, spannableString.length(), Object.class).length); + assertEquals(1, spannableString.getSpans(0, spannableString.length(), ForegroundColorSpan.class).length); + assertEquals(1, spannableString.getSpans(0, spannableString.length(), StyleSpan.class).length); + assertEquals(4, spannableString.length()); + assertEquals(Typeface.ITALIC, spannableString.getSpans(0, spannableString.length(), StyleSpan.class)[0].getStyle()); + } + + + @Test + public void testUrl() { + final SpannableString spannableString = SpannableUtil.url("test", "https://example.com"); + assertEquals(1, spannableString.getSpans(0, spannableString.length(), Object.class).length); + assertEquals(1, spannableString.getSpans(0, spannableString.length(), URLSpan.class).length); + assertEquals(4, spannableString.length()); + assertEquals("https://example.com", spannableString.getSpans(0, spannableString.length(), URLSpan.class)[0].getURL()); + } + +} |