You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

67 lines
2.0 KiB

/*
* Copyright (c) 2018-present, Facebook, Inc.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import org.json.JSONArray;
class UnknownCallsTest {
private int mBytesToRead;
public void jsonArray_linear(JSONArray jsonArray) {
int length = jsonArray.length();
for (int i = 0; i < length; ++i) {}
}
public void jsonArray_constant() {
JSONArray jsonArray = new JSONArray();
jsonArray.put(1);
for (int i = 0; i < jsonArray.length(); ++i) {}
}
public int read_sum_cost(
InputStream in, byte[] buffer, int byteOffset, int byteCount, ArrayList<Integer> list)
throws IOException {
int maxBytesToRead = Math.min(byteCount, mBytesToRead);
int bytesRead = in.read(buffer, byteOffset, maxBytesToRead);
for (int index = 0; index < bytesRead + maxBytesToRead; ++index) {}
return 0;
}
// Expected: Max(Math,min(...), InputStream.read(....)) but we get T
public int read_max_cost(
InputStream in, byte[] buffer, int byteOffset, int byteCount, ArrayList<Integer> list)
throws IOException {
int maxBytesToRead = Math.min(byteCount, mBytesToRead);
int bytesRead = in.read(buffer, byteOffset, maxBytesToRead);
// after the join, we get maxBytesToRead in [0, +oo]. Hence, the loop gets T
if (bytesRead > 0) {
maxBytesToRead = bytesRead + 1;
}
for (int index = 0; index < maxBytesToRead; ++index) {}
return 0;
}
private static void loop_over_charArray(StringBuilder builder, String input) {
for (Character c : input.toCharArray()) {}
}
private static void call_loop_over_charArray(StringBuilder out, String in) {
loop_over_charArray(out, in);
}
// hashCode is impure but we don't invalidate all other library
// calls such as size()
void unmodeled_impure_linear(ArrayList<Integer> list) {
for (int i = 0; i < list.size(); i++) {
list.get(i).hashCode();
}
}
}