@Test public void getRegisterSizeWithBuilderTypeListReturnsExpectedValue() { List<BuilderTypeReference> types = new LinkedList<BuilderTypeReference>(); BuilderTypeReference typeRef1 = mock(BuilderTypeReference.class); BuilderTypeReference typeRef2 = mock(BuilderTypeReference.class); when(typeRef1.getType()).thenReturn("I"); when(typeRef2.getType()).thenReturn("J"); types.add(typeRef1); types.add(typeRef2); BuilderTypeList typeList = new BuilderTypeList(types); int registerSize = Utils.getRegisterSize(typeList); assertEquals(3, registerSize); }
@Test public void builderTypeListToStringListReturnsExpected() { List<BuilderTypeReference> types = new LinkedList<BuilderTypeReference>(); BuilderTypeReference typeRef1 = mock(BuilderTypeReference.class); BuilderTypeReference typeRef2 = mock(BuilderTypeReference.class); when(typeRef1.getType()).thenReturn("typeRef1"); when(typeRef2.getType()).thenReturn("typeRef2"); types.add(typeRef1); types.add(typeRef2); BuilderTypeList typeList = new BuilderTypeList(types); List<String> typeNames = Utils.builderTypeListToTypeNames(typeList); assertEquals(2, typeNames.size()); assertEquals("typeRef1", typeNames.get(0)); assertEquals("typeRef2", typeNames.get(1)); }
@Nonnull public BuilderTypeList internTypeList(@Nullable List<? extends CharSequence> types) { if (types == null || types.size() == 0) { return BuilderTypeList.EMPTY; } BuilderTypeList ret = internedItems.get(types); if (ret != null) { return ret; } BuilderTypeList typeList = new BuilderTypeList( ImmutableList.copyOf(Iterables.transform(types, new Function<CharSequence, BuilderTypeReference>() { @Nonnull @Override public BuilderTypeReference apply(CharSequence input) { return dexBuilder.typeSection.internType(input.toString()); } }))); ret = internedItems.putIfAbsent(typeList, typeList); return ret==null?typeList:ret; }
@Nonnull public BuilderTypeList internTypeList(@Nullable List<? extends CharSequence> types) { if (types == null || types.size() == 0) { return BuilderTypeList.EMPTY; } BuilderTypeList ret = internedItems.get(types); if (ret != null) { return ret; } BuilderTypeList typeList = new BuilderTypeList( ImmutableList.copyOf(Iterables.transform(types, new Function<CharSequence, BuilderTypeReference>() { @Nonnull @Override public BuilderTypeReference apply(CharSequence input) { return context.typePool.internType(input.toString()); } }))); ret = internedItems.putIfAbsent(typeList, typeList); return ret==null?typeList:ret; }
@Nonnull public BuilderTypeList internTypeList(@Nullable List<? extends CharSequence> types) { if (types == null || types.size() == 0) { return BuilderTypeList.EMPTY; } BuilderTypeList ret = internedItems.get(types); if (ret != null) { return ret; } BuilderTypeList typeList = new BuilderTypeList( ImmutableList.copyOf(Iterables.transform(types, new Function<CharSequence, BuilderTypeReference>() { @Nonnull @Override public BuilderTypeReference apply(CharSequence input) { return dexBuilder.typeSection.internType(input.toString()); } }))); ret = internedItems.putIfAbsent(typeList, typeList); return ret==null?typeList:ret; }