123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- /*
- * Copyright (C) 2021 Thomas Wolf <thomas.wolf@paranor.ch> and others
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Distribution License v. 1.0 which is available at
- * https://www.eclipse.org/org/documents/edl-v10.php.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
- package org.eclipse.jgit.util;
-
- import static org.junit.Assert.assertArrayEquals;
- import static org.junit.Assert.assertEquals;
- import static org.junit.Assert.assertNotNull;
- import static org.junit.Assert.assertThrows;
- import static org.junit.Assert.assertTrue;
-
- import java.nio.charset.StandardCharsets;
-
- import org.junit.Test;
-
- /**
- * Tests for {@link Base85}.
- */
- public class Base85Test {
-
- private static final String VALID_CHARS = "0123456789"
- + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
- + "!#$%&()*+-;<=>?@^_`{|}~";
-
- @Test
- public void testChars() {
- for (int i = 0; i < 256; i++) {
- byte[] testData = { '1', '2', '3', '4', (byte) i };
- if (VALID_CHARS.indexOf(i) >= 0) {
- byte[] decoded = Base85.decode(testData, 4);
- assertNotNull(decoded);
- } else {
- assertThrows(IllegalArgumentException.class,
- () -> Base85.decode(testData, 4));
- }
- }
- }
-
- private void roundtrip(byte[] data, int expectedLength) {
- byte[] encoded = Base85.encode(data);
- assertEquals(expectedLength, encoded.length);
- assertArrayEquals(data, Base85.decode(encoded, data.length));
- }
-
- private void roundtrip(String data, int expectedLength) {
- roundtrip(data.getBytes(StandardCharsets.US_ASCII), expectedLength);
- }
-
- @Test
- public void testPadding() {
- roundtrip("", 0);
- roundtrip("a", 5);
- roundtrip("ab", 5);
- roundtrip("abc", 5);
- roundtrip("abcd", 5);
- roundtrip("abcde", 10);
- roundtrip("abcdef", 10);
- roundtrip("abcdefg", 10);
- roundtrip("abcdefgh", 10);
- roundtrip("abcdefghi", 15);
- }
-
- @Test
- public void testBinary() {
- roundtrip(new byte[] { 1 }, 5);
- roundtrip(new byte[] { 1, 2 }, 5);
- roundtrip(new byte[] { 1, 2, 3 }, 5);
- roundtrip(new byte[] { 1, 2, 3, 4 }, 5);
- roundtrip(new byte[] { 1, 2, 3, 4, 5 }, 10);
- roundtrip(new byte[] { 1, 2, 3, 4, 5, 0, 0, 0 }, 10);
- roundtrip(new byte[] { 1, 2, 3, 4, 0, 0, 0, 5 }, 10);
- }
-
- @Test
- public void testOverflow() {
- IllegalArgumentException e = assertThrows(
- IllegalArgumentException.class,
- () -> Base85.decode(new byte[] { '~', '~', '~', '~', '~' }, 4));
- assertTrue(e.getMessage().contains("overflow"));
- }
- }
|