From 8ee97b5c0123ec1e4d34ffa1022415d28e04885d Mon Sep 17 00:00:00 2001 From: Kamenev Yury Date: Mon, 4 Jul 2022 18:22:01 +0300 Subject: [PATCH] Added the wrapper for static methods of java.util.List --- .../engine/overrides/collections/List.java | 72 +++++++++++++++++++ .../overrides/collections/UtArrayList.java | 8 +++ .../utbot/framework/plugin/api/SootUtils.kt | 2 + 3 files changed, 82 insertions(+) create mode 100644 utbot-framework/src/main/java/org/utbot/engine/overrides/collections/List.java diff --git a/utbot-framework/src/main/java/org/utbot/engine/overrides/collections/List.java b/utbot-framework/src/main/java/org/utbot/engine/overrides/collections/List.java new file mode 100644 index 0000000000..b04c16694b --- /dev/null +++ b/utbot-framework/src/main/java/org/utbot/engine/overrides/collections/List.java @@ -0,0 +1,72 @@ +package org.utbot.engine.overrides.collections; + +import org.utbot.api.annotation.UtClassMock; + +import java.util.Collection; + +@UtClassMock(target = java.util.List.class, internalUsage = true) +public interface List extends java.util.List { + static java.util.List of() { + return new UtArrayList<>(); + } + + @SuppressWarnings("unchecked") + static java.util.List of(E e1) { + return new UtArrayList<>((E[]) new Object[]{e1}); + } + + @SuppressWarnings("unchecked") + static java.util.List of(E e1, E e2) { + return new UtArrayList<>((E[]) new Object[]{e1, e2}); + } + + @SuppressWarnings("unchecked") + static java.util.List of(E e1, E e2, E e3) { + return new UtArrayList<>((E[]) new Object[]{e1, e2, e3}); + } + + @SuppressWarnings("unchecked") + static java.util.List of(E e1, E e2, E e3, E e4) { + return new UtArrayList<>((E[]) new Object[]{e1, e2, e3, e4}); + } + + @SuppressWarnings("unchecked") + static java.util.List of(E e1, E e2, E e3, E e4, E e5) { + return new UtArrayList<>((E[]) new Object[]{e1, e2, e3, e4, e5}); + } + + @SuppressWarnings("unchecked") + static java.util.List of(E e1, E e2, E e3, E e4, E e5, E e6) { + return new UtArrayList<>((E[]) new Object[]{e1, e2, e3, e4, e5, e6}); + } + + @SuppressWarnings("unchecked") + static java.util.List of(E e1, E e2, E e3, E e4, E e5, E e6, E e7) { + return new UtArrayList<>((E[]) new Object[]{e1, e2, e3, e4, e5, e6, e7}); + } + + @SuppressWarnings("unchecked") + static java.util.List of(E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8) { + return new UtArrayList<>((E[]) new Object[]{e1, e2, e3, e4, e5, e6, e7, e8}); + } + + @SuppressWarnings("unchecked") + static java.util.List of(E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8, E e9) { + return new UtArrayList<>((E[]) new Object[]{e1, e2, e3, e4, e5, e6, e7, e8, e9}); + } + + @SuppressWarnings("unchecked") + static java.util.List of(E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8, E e9, E e10) { + return new UtArrayList<>((E[]) new Object[]{e1, e2, e3, e4, e5, e6, e7, e8, e9, e10}); + } + + @SafeVarargs + @SuppressWarnings("varargs") + static java.util.List of(E... elements) { + return new UtArrayList<>(elements); + } + + static java.util.List copyOf(Collection collection) { + return new UtArrayList<>(collection); + } +} diff --git a/utbot-framework/src/main/java/org/utbot/engine/overrides/collections/UtArrayList.java b/utbot-framework/src/main/java/org/utbot/engine/overrides/collections/UtArrayList.java index 8d3c4d45e5..04b4aad77c 100644 --- a/utbot-framework/src/main/java/org/utbot/engine/overrides/collections/UtArrayList.java +++ b/utbot-framework/src/main/java/org/utbot/engine/overrides/collections/UtArrayList.java @@ -63,6 +63,14 @@ public UtArrayList(Collection c) { addAll(c); } + public UtArrayList(E[] data) { + visit(this); + int length = data.length; + elementData = new RangeModifiableUnlimitedArray<>(); + elementData.setRange(0, data, 0, length); + elementData.end = length; + } + /** * Precondition check is called only once by object, * if it was passed as parameter to method under test. diff --git a/utbot-framework/src/main/kotlin/org/utbot/framework/plugin/api/SootUtils.kt b/utbot-framework/src/main/kotlin/org/utbot/framework/plugin/api/SootUtils.kt index 352af4b4bf..693489bfff 100644 --- a/utbot-framework/src/main/kotlin/org/utbot/framework/plugin/api/SootUtils.kt +++ b/utbot-framework/src/main/kotlin/org/utbot/framework/plugin/api/SootUtils.kt @@ -26,6 +26,7 @@ import org.utbot.engine.overrides.collections.UtHashSet import org.utbot.engine.overrides.collections.UtLinkedList import org.utbot.engine.overrides.UtOverrideMock import org.utbot.engine.overrides.collections.Collection +import org.utbot.engine.overrides.collections.List import org.utbot.engine.overrides.collections.UtGenericStorage import org.utbot.engine.overrides.collections.UtOptional import org.utbot.engine.overrides.collections.UtOptionalDouble @@ -133,6 +134,7 @@ private val classesToLoad = arrayOf( UtStringBuffer::class, Stream::class, Collection::class, + List::class, UtStream::class, UtStream.UtStreamIterator::class ) \ No newline at end of file