/** * Oshi (https://github.com/oshi/oshi) * * Copyright (c) 2010 - 2017 The Oshi Project Team * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Maintainers: * dblock[at]dblock[dot]org * widdis[at]gmail[dot]com * enrico.bianchi[at]gmail[dot]com * * Contributors: * https://github.com/oshi/oshi/graphs/contributors */ package oshi.util; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import javax.xml.bind.DatatypeConverter; import org.junit.Test; /* * Tests EdidUtil */ public class EdidUtilTest { private final static String EDID_HEADER = "00FFFFFFFFFFFF00"; private final static String EDID_MANUFID = "0610"; private final static String EDID_PRODCODE = "2792"; private final static String EDID_SERIAL = "250C2C16"; private final static String EDID_WKYR = "2C16"; private final static String EDID_VERSION = "0104"; private final static String EDID_VIDEO = "B53C2278226FB1A7554C9E250C5054000000"; private final static String EDID_TIMING = "01010101010101010101010101010101"; private final static String EDID_DESC1 = "565E00A0A0A029503020350055502100001A"; private final static String EDID_DESC2 = "1A1D008051D01C204080350055502100001C"; private final static String EDID_DESC3 = "000000FF004330324A4D325046463247430A"; private final static String EDID_DESC4 = "000000FC005468756E646572626F6C740A20"; private final static String EDID_DESC5 = "000000FA004330324A4D325046463247430A"; private final static String EDID_DESC6 = "000000FB005468756E646572626F6C740A20"; private final static String EDID_DESC7 = "000000FD004330324A4D325046463247430A"; private final static String EDID_DESC8 = "000000FE005468756E646572626F6C740A20"; private final static String EDID_EXTS = "01"; private final static String EDID_CHKSUM = "C7"; private final static String EDID_STR = EDID_HEADER + EDID_MANUFID + EDID_PRODCODE + EDID_SERIAL + EDID_WKYR + EDID_VERSION + EDID_VIDEO + EDID_TIMING + EDID_DESC1 + EDID_DESC2 + EDID_DESC3 + EDID_DESC4 + EDID_EXTS + EDID_CHKSUM; private final static String EDID_STR2 = EDID_HEADER + EDID_MANUFID + EDID_PRODCODE + EDID_SERIAL + EDID_WKYR + EDID_VERSION + EDID_VIDEO + EDID_TIMING + EDID_DESC5 + EDID_DESC6 + EDID_DESC7 + EDID_DESC8 + EDID_EXTS + EDID_CHKSUM; private final static byte[] EDID = DatatypeConverter.parseHexBinary(EDID_STR); @Test public void testToHexString() { byte[] temp = { (byte) 0xab, (byte) 0xcd, (byte) 0xef }; assertEquals("ABCDEF", EdidUtil.toHexString(temp)); assertEquals(EDID_STR, EdidUtil.toHexString(EDID)); } @Test public void testGetEdidAttrs() { assertEquals("A", EdidUtil.getManufacturerID(EDID)); assertEquals("9227", EdidUtil.getProductID(EDID)); assertEquals("162C0C25", EdidUtil.getSerialNo(EDID)); assertEquals((byte) 44, EdidUtil.getWeek(EDID)); assertEquals(2012, EdidUtil.getYear(EDID)); assertEquals("1.4", EdidUtil.getVersion(EDID)); assertFalse(EdidUtil.isDigital(EDID)); assertEquals(60, EdidUtil.getHcm(EDID)); assertEquals(34, EdidUtil.getVcm(EDID)); } @Test public void testGetDescriptors() { byte[][] descs = EdidUtil.getDescriptors(EDID); for (int i = 0; i < 4; i++) { int type = EdidUtil.getDescriptorType(descs[i]); String timing = EdidUtil.getTimingDescriptor(descs[i]); String range = EdidUtil.getDescriptorRangeLimits(descs[i]); switch (i) { case 0: assertEquals(0x565E00A0, type); assertEquals("Clock 241MHz, Active Pixels 2560x3840 ", timing); assertEquals("Field Rate -96-41 Hz vertical, 80-48 Hz horizontal, Max clock: 320 MHz", range); break; case 1: assertEquals(0x1A1D0080, type); assertEquals("Clock 74MHz, Active Pixels 1280x3840 ", timing); assertEquals("Field Rate -48-28 Hz vertical, 32-64 Hz horizontal, Max clock: -1280 MHz", range); break; case 2: assertEquals(0xFF, type); assertEquals("C02JM2PFF2GC", EdidUtil.getDescriptorText(descs[i])); assertEquals(EDID_DESC3, EdidUtil.getDescriptorHex(descs[i])); break; case 3: assertEquals(0xFC, type); assertEquals("Thunderbolt", EdidUtil.getDescriptorText(descs[i])); break; default: } } } @Test public void testToString() { String[] toString = EdidUtil.toString(EDID).split("\\n"); assertEquals(6, toString.length); toString = EdidUtil.toString(DatatypeConverter.parseHexBinary(EDID_STR2)).split("\\n"); assertEquals(6, toString.length); }; }