13524472e8f064dbd42e1a35d511a1efe36d2cbf2Richard Uhler/* 23524472e8f064dbd42e1a35d511a1efe36d2cbf2Richard Uhler * Copyright (C) 2015 The Android Open Source Project 33524472e8f064dbd42e1a35d511a1efe36d2cbf2Richard Uhler * 43524472e8f064dbd42e1a35d511a1efe36d2cbf2Richard Uhler * Licensed under the Apache License, Version 2.0 (the "License"); 53524472e8f064dbd42e1a35d511a1efe36d2cbf2Richard Uhler * you may not use this file except in compliance with the License. 63524472e8f064dbd42e1a35d511a1efe36d2cbf2Richard Uhler * You may obtain a copy of the License at 73524472e8f064dbd42e1a35d511a1efe36d2cbf2Richard Uhler * 83524472e8f064dbd42e1a35d511a1efe36d2cbf2Richard Uhler * http://www.apache.org/licenses/LICENSE-2.0 93524472e8f064dbd42e1a35d511a1efe36d2cbf2Richard Uhler * 103524472e8f064dbd42e1a35d511a1efe36d2cbf2Richard Uhler * Unless required by applicable law or agreed to in writing, software 113524472e8f064dbd42e1a35d511a1efe36d2cbf2Richard Uhler * distributed under the License is distributed on an "AS IS" BASIS, 123524472e8f064dbd42e1a35d511a1efe36d2cbf2Richard Uhler * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 133524472e8f064dbd42e1a35d511a1efe36d2cbf2Richard Uhler * See the License for the specific language governing permissions and 143524472e8f064dbd42e1a35d511a1efe36d2cbf2Richard Uhler * limitations under the License. 153524472e8f064dbd42e1a35d511a1efe36d2cbf2Richard Uhler */ 163524472e8f064dbd42e1a35d511a1efe36d2cbf2Richard Uhler 173524472e8f064dbd42e1a35d511a1efe36d2cbf2Richard Uhlerpackage com.android.ahat; 183524472e8f064dbd42e1a35d511a1efe36d2cbf2Richard Uhler 193524472e8f064dbd42e1a35d511a1efe36d2cbf2Richard Uhlerimport com.android.tools.perflib.heap.Instance; 203524472e8f064dbd42e1a35d511a1efe36d2cbf2Richard Uhlerimport java.io.IOException; 213524472e8f064dbd42e1a35d511a1efe36d2cbf2Richard Uhlerimport static org.junit.Assert.assertEquals; 223524472e8f064dbd42e1a35d511a1efe36d2cbf2Richard Uhlerimport static org.junit.Assert.assertNotNull; 233524472e8f064dbd42e1a35d511a1efe36d2cbf2Richard Uhlerimport static org.junit.Assert.assertNull; 243524472e8f064dbd42e1a35d511a1efe36d2cbf2Richard Uhlerimport org.junit.Test; 253524472e8f064dbd42e1a35d511a1efe36d2cbf2Richard Uhler 263524472e8f064dbd42e1a35d511a1efe36d2cbf2Richard Uhlerpublic class InstanceUtilsTest { 273524472e8f064dbd42e1a35d511a1efe36d2cbf2Richard Uhler @Test 2877ff54b5055ec55806069c8d026b102df29857b5Richard Uhler public void asStringBasic() throws IOException { 293524472e8f064dbd42e1a35d511a1efe36d2cbf2Richard Uhler TestDump dump = TestDump.getTestDump(); 303524472e8f064dbd42e1a35d511a1efe36d2cbf2Richard Uhler Instance str = (Instance)dump.getDumpedThing("basicString"); 313524472e8f064dbd42e1a35d511a1efe36d2cbf2Richard Uhler assertEquals("hello, world", InstanceUtils.asString(str)); 323524472e8f064dbd42e1a35d511a1efe36d2cbf2Richard Uhler } 333524472e8f064dbd42e1a35d511a1efe36d2cbf2Richard Uhler 343524472e8f064dbd42e1a35d511a1efe36d2cbf2Richard Uhler @Test 35c7f7712a3808b8e3046eae8a4dbb7f6a7fc6faf2Richard Uhler public void asStringCharArray() throws IOException { 36c7f7712a3808b8e3046eae8a4dbb7f6a7fc6faf2Richard Uhler TestDump dump = TestDump.getTestDump(); 37c7f7712a3808b8e3046eae8a4dbb7f6a7fc6faf2Richard Uhler Instance str = (Instance)dump.getDumpedThing("charArray"); 38c7f7712a3808b8e3046eae8a4dbb7f6a7fc6faf2Richard Uhler assertEquals("char thing", InstanceUtils.asString(str)); 39c7f7712a3808b8e3046eae8a4dbb7f6a7fc6faf2Richard Uhler } 40c7f7712a3808b8e3046eae8a4dbb7f6a7fc6faf2Richard Uhler 41c7f7712a3808b8e3046eae8a4dbb7f6a7fc6faf2Richard Uhler @Test 4277ff54b5055ec55806069c8d026b102df29857b5Richard Uhler public void asStringTruncated() throws IOException { 4377ff54b5055ec55806069c8d026b102df29857b5Richard Uhler TestDump dump = TestDump.getTestDump(); 4477ff54b5055ec55806069c8d026b102df29857b5Richard Uhler Instance str = (Instance)dump.getDumpedThing("basicString"); 4577ff54b5055ec55806069c8d026b102df29857b5Richard Uhler assertEquals("hello", InstanceUtils.asString(str, 5)); 4677ff54b5055ec55806069c8d026b102df29857b5Richard Uhler } 4777ff54b5055ec55806069c8d026b102df29857b5Richard Uhler 4877ff54b5055ec55806069c8d026b102df29857b5Richard Uhler @Test 49c7f7712a3808b8e3046eae8a4dbb7f6a7fc6faf2Richard Uhler public void asStringCharArrayTruncated() throws IOException { 50c7f7712a3808b8e3046eae8a4dbb7f6a7fc6faf2Richard Uhler TestDump dump = TestDump.getTestDump(); 51c7f7712a3808b8e3046eae8a4dbb7f6a7fc6faf2Richard Uhler Instance str = (Instance)dump.getDumpedThing("charArray"); 52c7f7712a3808b8e3046eae8a4dbb7f6a7fc6faf2Richard Uhler assertEquals("char ", InstanceUtils.asString(str, 5)); 53c7f7712a3808b8e3046eae8a4dbb7f6a7fc6faf2Richard Uhler } 54c7f7712a3808b8e3046eae8a4dbb7f6a7fc6faf2Richard Uhler 55c7f7712a3808b8e3046eae8a4dbb7f6a7fc6faf2Richard Uhler @Test 5677ff54b5055ec55806069c8d026b102df29857b5Richard Uhler public void asStringExactMax() throws IOException { 5777ff54b5055ec55806069c8d026b102df29857b5Richard Uhler TestDump dump = TestDump.getTestDump(); 5877ff54b5055ec55806069c8d026b102df29857b5Richard Uhler Instance str = (Instance)dump.getDumpedThing("basicString"); 5977ff54b5055ec55806069c8d026b102df29857b5Richard Uhler assertEquals("hello, world", InstanceUtils.asString(str, 12)); 6077ff54b5055ec55806069c8d026b102df29857b5Richard Uhler } 6177ff54b5055ec55806069c8d026b102df29857b5Richard Uhler 6277ff54b5055ec55806069c8d026b102df29857b5Richard Uhler @Test 63c7f7712a3808b8e3046eae8a4dbb7f6a7fc6faf2Richard Uhler public void asStringCharArrayExactMax() throws IOException { 64c7f7712a3808b8e3046eae8a4dbb7f6a7fc6faf2Richard Uhler TestDump dump = TestDump.getTestDump(); 65c7f7712a3808b8e3046eae8a4dbb7f6a7fc6faf2Richard Uhler Instance str = (Instance)dump.getDumpedThing("charArray"); 66c7f7712a3808b8e3046eae8a4dbb7f6a7fc6faf2Richard Uhler assertEquals("char thing", InstanceUtils.asString(str, 10)); 67c7f7712a3808b8e3046eae8a4dbb7f6a7fc6faf2Richard Uhler } 68c7f7712a3808b8e3046eae8a4dbb7f6a7fc6faf2Richard Uhler 69c7f7712a3808b8e3046eae8a4dbb7f6a7fc6faf2Richard Uhler @Test 7077ff54b5055ec55806069c8d026b102df29857b5Richard Uhler public void asStringNotTruncated() throws IOException { 7177ff54b5055ec55806069c8d026b102df29857b5Richard Uhler TestDump dump = TestDump.getTestDump(); 7277ff54b5055ec55806069c8d026b102df29857b5Richard Uhler Instance str = (Instance)dump.getDumpedThing("basicString"); 7377ff54b5055ec55806069c8d026b102df29857b5Richard Uhler assertEquals("hello, world", InstanceUtils.asString(str, 50)); 7477ff54b5055ec55806069c8d026b102df29857b5Richard Uhler } 7577ff54b5055ec55806069c8d026b102df29857b5Richard Uhler 7677ff54b5055ec55806069c8d026b102df29857b5Richard Uhler @Test 77c7f7712a3808b8e3046eae8a4dbb7f6a7fc6faf2Richard Uhler public void asStringCharArrayNotTruncated() throws IOException { 78c7f7712a3808b8e3046eae8a4dbb7f6a7fc6faf2Richard Uhler TestDump dump = TestDump.getTestDump(); 79c7f7712a3808b8e3046eae8a4dbb7f6a7fc6faf2Richard Uhler Instance str = (Instance)dump.getDumpedThing("charArray"); 80c7f7712a3808b8e3046eae8a4dbb7f6a7fc6faf2Richard Uhler assertEquals("char thing", InstanceUtils.asString(str, 50)); 81c7f7712a3808b8e3046eae8a4dbb7f6a7fc6faf2Richard Uhler } 82c7f7712a3808b8e3046eae8a4dbb7f6a7fc6faf2Richard Uhler 83c7f7712a3808b8e3046eae8a4dbb7f6a7fc6faf2Richard Uhler @Test 8477ff54b5055ec55806069c8d026b102df29857b5Richard Uhler public void asStringNegativeMax() throws IOException { 8577ff54b5055ec55806069c8d026b102df29857b5Richard Uhler TestDump dump = TestDump.getTestDump(); 8677ff54b5055ec55806069c8d026b102df29857b5Richard Uhler Instance str = (Instance)dump.getDumpedThing("basicString"); 8777ff54b5055ec55806069c8d026b102df29857b5Richard Uhler assertEquals("hello, world", InstanceUtils.asString(str, -3)); 8877ff54b5055ec55806069c8d026b102df29857b5Richard Uhler } 8977ff54b5055ec55806069c8d026b102df29857b5Richard Uhler 9077ff54b5055ec55806069c8d026b102df29857b5Richard Uhler @Test 91c7f7712a3808b8e3046eae8a4dbb7f6a7fc6faf2Richard Uhler public void asStringCharArrayNegativeMax() throws IOException { 92c7f7712a3808b8e3046eae8a4dbb7f6a7fc6faf2Richard Uhler TestDump dump = TestDump.getTestDump(); 93c7f7712a3808b8e3046eae8a4dbb7f6a7fc6faf2Richard Uhler Instance str = (Instance)dump.getDumpedThing("charArray"); 94c7f7712a3808b8e3046eae8a4dbb7f6a7fc6faf2Richard Uhler assertEquals("char thing", InstanceUtils.asString(str, -3)); 95c7f7712a3808b8e3046eae8a4dbb7f6a7fc6faf2Richard Uhler } 96c7f7712a3808b8e3046eae8a4dbb7f6a7fc6faf2Richard Uhler 97c7f7712a3808b8e3046eae8a4dbb7f6a7fc6faf2Richard Uhler @Test 9877ff54b5055ec55806069c8d026b102df29857b5Richard Uhler public void asStringNull() throws IOException { 993524472e8f064dbd42e1a35d511a1efe36d2cbf2Richard Uhler TestDump dump = TestDump.getTestDump(); 1003524472e8f064dbd42e1a35d511a1efe36d2cbf2Richard Uhler Instance obj = (Instance)dump.getDumpedThing("nullString"); 1013524472e8f064dbd42e1a35d511a1efe36d2cbf2Richard Uhler assertNull(InstanceUtils.asString(obj)); 1023524472e8f064dbd42e1a35d511a1efe36d2cbf2Richard Uhler } 1033524472e8f064dbd42e1a35d511a1efe36d2cbf2Richard Uhler 1043524472e8f064dbd42e1a35d511a1efe36d2cbf2Richard Uhler @Test 10577ff54b5055ec55806069c8d026b102df29857b5Richard Uhler public void asStringNotString() throws IOException { 1063524472e8f064dbd42e1a35d511a1efe36d2cbf2Richard Uhler TestDump dump = TestDump.getTestDump(); 1073524472e8f064dbd42e1a35d511a1efe36d2cbf2Richard Uhler Instance obj = (Instance)dump.getDumpedThing("anObject"); 1083524472e8f064dbd42e1a35d511a1efe36d2cbf2Richard Uhler assertNotNull(obj); 1093524472e8f064dbd42e1a35d511a1efe36d2cbf2Richard Uhler assertNull(InstanceUtils.asString(obj)); 1103524472e8f064dbd42e1a35d511a1efe36d2cbf2Richard Uhler } 111b357730dd691e608f8a3d155330ab3763ce912cfRichard Uhler 112b357730dd691e608f8a3d155330ab3763ce912cfRichard Uhler @Test 113b357730dd691e608f8a3d155330ab3763ce912cfRichard Uhler public void basicReference() throws IOException { 114b357730dd691e608f8a3d155330ab3763ce912cfRichard Uhler TestDump dump = TestDump.getTestDump(); 115b357730dd691e608f8a3d155330ab3763ce912cfRichard Uhler 116b357730dd691e608f8a3d155330ab3763ce912cfRichard Uhler Instance pref = (Instance)dump.getDumpedThing("aPhantomReference"); 117b357730dd691e608f8a3d155330ab3763ce912cfRichard Uhler Instance wref = (Instance)dump.getDumpedThing("aWeakReference"); 118b357730dd691e608f8a3d155330ab3763ce912cfRichard Uhler Instance referent = (Instance)dump.getDumpedThing("anObject"); 119b357730dd691e608f8a3d155330ab3763ce912cfRichard Uhler assertNotNull(pref); 120b357730dd691e608f8a3d155330ab3763ce912cfRichard Uhler assertNotNull(wref); 121b357730dd691e608f8a3d155330ab3763ce912cfRichard Uhler assertNotNull(referent); 122b357730dd691e608f8a3d155330ab3763ce912cfRichard Uhler assertEquals(referent, InstanceUtils.getReferent(pref)); 123b357730dd691e608f8a3d155330ab3763ce912cfRichard Uhler assertEquals(referent, InstanceUtils.getReferent(wref)); 124b357730dd691e608f8a3d155330ab3763ce912cfRichard Uhler assertNull(InstanceUtils.getReferent(referent)); 125b357730dd691e608f8a3d155330ab3763ce912cfRichard Uhler } 1263524472e8f064dbd42e1a35d511a1efe36d2cbf2Richard Uhler} 127