TestLarkSheetsUtil.java
/*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.facebook.presto.lark.sheets;
import com.facebook.airlift.json.JsonCodec;
import com.google.common.collect.ImmutableMap;
import org.testng.annotations.Test;
import java.io.IOException;
import java.io.UncheckedIOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Map;
import static com.facebook.presto.lark.sheets.LarkSheetsUtil.RADIX;
import static com.facebook.presto.lark.sheets.LarkSheetsUtil.columnIndexToColumnLabel;
import static com.facebook.presto.lark.sheets.LarkSheetsUtil.columnLabelToColumnIndex;
import static com.facebook.presto.lark.sheets.LarkSheetsUtil.mask;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNull;
import static org.testng.Assert.fail;
public class TestLarkSheetsUtil
{
@Test
public void testLoadAppSecret()
{
final String appSecret = "faking_app_secret";
// create a secret file
final Path secretFilePath;
try {
secretFilePath = Files.createTempFile("app-secret-", ".json");
JsonCodec<Map<String, String>> jsonCodec = JsonCodec.mapJsonCodec(String.class, String.class);
byte[] bytes = jsonCodec.toBytes(ImmutableMap.of("app-secret", appSecret));
Files.write(secretFilePath, bytes);
}
catch (IOException e) {
fail("Cannot create a secret file", e);
throw new UncheckedIOException(e);
}
// test loadAppSecret
String loadedAppSecret = LarkSheetsUtil.loadAppSecret(secretFilePath.toString());
assertEquals(loadedAppSecret, appSecret);
}
@Test
public void testMask()
{
assertNull(mask(null));
assertEquals("", mask(""));
assertEquals("123", mask("123"));
assertEquals("123456", mask("123456"));
assertEquals("****567890", mask("1234567890"));
}
@Test
public void testColumnLabelToColumnIndex()
{
assertEquals(columnLabelToColumnIndex("A"), 0);
assertEquals(columnLabelToColumnIndex("B"), 1);
assertEquals(columnLabelToColumnIndex("Z"), RADIX - 1);
assertEquals(columnLabelToColumnIndex("AA"), RADIX);
assertEquals(columnLabelToColumnIndex("AB"), RADIX + 1);
assertEquals(columnLabelToColumnIndex("AZ"), RADIX + RADIX - 1);
assertEquals(columnLabelToColumnIndex("BA"), RADIX + RADIX);
assertEquals(columnLabelToColumnIndex("ZZ"), RADIX + RADIX * RADIX - 1);
assertEquals(columnLabelToColumnIndex("AAA"), RADIX + RADIX * RADIX);
assertEquals(columnLabelToColumnIndex("AAB"), RADIX + RADIX * RADIX + 1);
assertEquals(columnLabelToColumnIndex("ZZZ"), RADIX + RADIX * RADIX + RADIX * RADIX * RADIX - 1);
assertEquals(columnLabelToColumnIndex("AAAA"), RADIX + RADIX * RADIX + RADIX * RADIX * RADIX);
assertEquals(columnLabelToColumnIndex("AAAB"), RADIX + RADIX * RADIX + RADIX * RADIX * RADIX + 1);
}
@Test
public void testColumnIndexToColumnLabel()
{
assertEquals(columnIndexToColumnLabel(0), "A");
assertEquals(columnIndexToColumnLabel(1), "B");
assertEquals(columnIndexToColumnLabel(RADIX - 1), "Z");
assertEquals(columnIndexToColumnLabel(RADIX), "AA");
assertEquals(columnIndexToColumnLabel(RADIX + 1), "AB");
assertEquals(columnIndexToColumnLabel(RADIX + RADIX - 1), "AZ");
assertEquals(columnIndexToColumnLabel(RADIX + RADIX), "BA");
assertEquals(columnIndexToColumnLabel(RADIX + RADIX + 1), "BB");
assertEquals(columnIndexToColumnLabel(RADIX * RADIX + RADIX - 1), "ZZ");
assertEquals(columnIndexToColumnLabel(RADIX * RADIX + RADIX), "AAA");
assertEquals(columnIndexToColumnLabel(RADIX * RADIX + RADIX + 1), "AAB");
assertEquals(columnIndexToColumnLabel(RADIX * RADIX * RADIX + RADIX * RADIX + RADIX - 1), "ZZZ");
assertEquals(columnIndexToColumnLabel(RADIX * RADIX * RADIX + RADIX * RADIX + RADIX), "AAAA");
assertEquals(columnIndexToColumnLabel(RADIX * RADIX * RADIX + RADIX * RADIX + RADIX + 1), "AAAB");
}
@Test
public void testColumnIndexLabelRoundTrip()
{
for (int i = 0; i < 65535; i++) {
assertEquals(columnLabelToColumnIndex(columnIndexToColumnLabel(i)), i);
}
}
}