/*
* Copyright 2015 Google Inc. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.google.errorprone.bugpatterns.testdata;
import com.google.common.collect.Iterables;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* @author glorioso@google.com (Nick Glorioso)
*/
public class SizeGreaterThanOrEqualsZeroPositiveCases {
private List<Integer> intList = new ArrayList<>();
private Set<Integer> intSet = new HashSet<>();
private Map<Integer, Integer> intMap = new HashMap<>();
private Collection<Integer> intCollection = intList;
public boolean collectionSize() {
// BUG: Diagnostic contains: !intList.isEmpty()
boolean foo = intList.size() >= 0;
// BUG: Diagnostic contains: !intSet.isEmpty()
foo = intSet.size() >= 0;
// BUG: Diagnostic contains: !intSet.isEmpty()
foo = 0 <= intSet.size();
// BUG: Diagnostic contains: !intMap.isEmpty()
foo = intMap.size() >= 0;
// BUG: Diagnostic contains: !intCollection.isEmpty()
foo = intCollection.size() >= 0;
// Yes, that works as java code
// BUG: Diagnostic contains: !new ArrayList<Integer>().isEmpty()
if (new ArrayList<Integer>().size() >= 0) {}
CollectionContainer baz = new CollectionContainer();
// BUG: Diagnostic contains: !baz.intList.isEmpty()
if (baz.intList.size() >= 0) {}
// BUG: Diagnostic contains: !baz.getIntList().isEmpty()
if (baz.getIntList().size() >= 0) {}
// BUG: Diagnostic contains: !Iterables.isEmpty(baz.getIntList())
foo = Iterables.size(baz.getIntList()) >= 0;
return foo;
}
public void stringLength() {
String myString = "foo";
CharSequence charSequence = myString;
StringBuffer stringBuffer = new StringBuffer(myString);
StringBuilder stringBuilder = new StringBuilder(myString);
boolean foo = false;
// BUG: Diagnostic contains: !myString.isEmpty()
foo = myString.length() >= 0;
// BUG: Diagnostic contains: !"My String Literal".isEmpty()
foo = "My String Literal".length() >= 0;
// BUG: Diagnostic contains: !myString.trim().substring(0).isEmpty();
foo = myString.trim().substring(0).length() >= 0;
// BUG: Diagnostic contains: charSequence.length() > 0
foo = charSequence.length() >= 0;
// BUG: Diagnostic contains: stringBuffer.length() > 0
foo = stringBuffer.length() >= 0;
// BUG: Diagnostic contains: 0 < stringBuffer.length()
foo = 0 <= stringBuffer.length();
// BUG: Diagnostic contains: stringBuilder.length() > 0
foo = stringBuilder.length() >= 0;
}
private static int[] staticIntArray;
private int[] intArray;
private boolean[][] twoDarray;
public boolean arrayLength() {
// BUG: Diagnostic contains: intArray.length > 0
boolean foo = intArray.length >= 0;
// BUG: Diagnostic contains: twoDarray.length > 0
foo = twoDarray.length >= 0;
// BUG: Diagnostic contains: staticIntArray.length > 0
foo = staticIntArray.length >= 0;
// BUG: Diagnostic contains: twoDarray[0].length > 0
foo = twoDarray[0].length >= 0;
// BUG: Diagnostic contains: 0 < twoDarray[0].length
foo = 0 <= twoDarray[0].length;
// BUG: Diagnostic contains: (((((twoDarray))))).length > 0
foo = (((((twoDarray))))).length >= 0;
return foo;
}
private static class CollectionContainer {
List<Integer> intList;
List<Integer> getIntList() {
return intList;
}
}
}