Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .checkstyle.xml
Original file line number Diff line number Diff line change
Expand Up @@ -285,7 +285,7 @@
value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF, VARIABLE_DEF"/>
</module>
<module name="JavadocMethod">
<property name="scope" value="public"/>
<property name="accessModifiers" value="public"/>
<property name="allowMissingParamTags" value="true"/>
<property name="allowMissingReturnTag" value="true"/>
<property name="allowedAnnotations" value="Override, Test"/>
Expand Down
3 changes: 2 additions & 1 deletion docker/include/bacnet/bacnetFaux/src/main/resources/pics.csv
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
Bacnet_Object_Type,Bacnet_Object_Property,Property_Datatype,Conformance_Code,Supported,
Bacnet_Analogue_Input,Unsupported_Property,,R,FALSE,
Bacnet_Analogue_Input,Object_Identifier,BACnetObjectIdentifier,R,TRUE,
Bacnet_Analogue_Input,Object_Name,CharacterString,W,TRUE,
Bacnet_Analogue_Input,Object_Type,BACnetObjectType,R,TRUE,
Expand Down Expand Up @@ -483,4 +484,4 @@ Bacnet_Trend_Log,Event_Message_Texts_Config,BACnetARRAY[3] of CharacterString,O,
Bacnet_Trend_Log,Event_Detection_Enable,BOOLEAN,O,TRUE,
Bacnet_Trend_Log,Event_Algorithm_Inhibit,,O,TRUE,
Bacnet_Trend_Log,Event_Algorithm_Inhibit_Ref,,O,TRUE,
Bacnet_Trend_Log,Property_List,BACnetARRAY[N] of BACnetPropertyIdentifier,R,TRUE,
Bacnet_Trend_Log,Property_List,BACnetARRAY[N] of BACnetPropertyIdentifier,R,TRUE,
149 changes: 113 additions & 36 deletions subset/bacnet/bacnetTests/src/main/java/helper/PicsValidator.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Multimap;

import java.util.*;
import java.util.ArrayList;
import java.util.Set;
import java.util.regex.Pattern;

public class PicsValidator {
Expand All @@ -18,62 +18,136 @@ public class PicsValidator {
boolean testPassed = false;
private int count = 0;

public void validate(String bacnetObjectType, String bacnetObjectProperty, String conformanceCode,
String supported, Multimap bacnetPointsMap, boolean verboseOutput) {
/**
*
* @param bacnetObjectType
* @param bacnetObjectProperty
* @param conformanceCode
* @param supported
* @param bacnetPointsMap
* @param verboseOutput
*/
public void validate(
String bacnetObjectType,
String bacnetObjectProperty,
String conformanceCode,
String supported,
Multimap bacnetPointsMap,
boolean verboseOutput) {

Set<String> mapKeySet = bacnetPointsMap.keySet();
ArrayList<String> keys = getMapKeys(mapKeySet, bacnetObjectType);

if (keys.size() == 0 && (conformanceCode.contains(read) || conformanceCode.equals(write))
if (keys.size() == 0 && !supported.equals(Supported)) {
writeToAppendix(
formatProperty,
bacnetObjectType,
bacnetObjectProperty,
conformanceCode,
"SKIPPED",
verboseOutput);
setResult(true);
} else if (keys.size() == 0
&& (conformanceCode.contains(read) || conformanceCode.equals(write))
&& !bacnetObjectProperty.equals("Property List")) {
writeToAppendix(formatProperty, bacnetObjectType, bacnetObjectProperty, conformanceCode,
"FAILED", verboseOutput);
writeToAppendix(
formatProperty,
bacnetObjectType,
bacnetObjectProperty,
conformanceCode,
"FAILED",
verboseOutput);
setResult(false);
} else if (keys.size() == 0 && conformanceCode.contains(optional)
} else if (keys.size() == 0
&& conformanceCode.contains(optional)
&& !bacnetObjectProperty.equals("Property List")) {
writeToAppendix(formatProperty, bacnetObjectType, bacnetObjectProperty, conformanceCode,
"PASSED/WARNING", verboseOutput);
writeToAppendix(
formatProperty,
bacnetObjectType,
bacnetObjectProperty,
conformanceCode,
"PASSED/WARNING",
verboseOutput);
setResult(true);
} else if (keys.size() == 0 && bacnetObjectProperty.equals("Property List")) {
writeToAppendix(formatProperty, bacnetObjectType, bacnetObjectProperty, conformanceCode,
"PASSED", verboseOutput);
writeToAppendix(
formatProperty,
bacnetObjectType,
bacnetObjectProperty,
conformanceCode,
"PASSED",
verboseOutput);
setResult(true);
}

for (String key : keys) {
String properties = bacnetPointsMap.get(key).toString();
boolean bacnetObjectPropertyIsFound =
Pattern.compile(Pattern.quote(bacnetObjectProperty), Pattern.CASE_INSENSITIVE)
.matcher(properties).find();
if (!bacnetObjectPropertyIsFound
&& (conformanceCode.contains(read) || conformanceCode.equals(write)) && supported.equals(Supported)
&& !bacnetObjectProperty.equals("Property List")) {
writeToAppendix(formatProperty, bacnetObjectType, bacnetObjectProperty, conformanceCode,
"FAILED", verboseOutput);
Pattern.compile(Pattern.quote(bacnetObjectProperty), Pattern.CASE_INSENSITIVE)
.matcher(properties)
.find();
if (!supported.equals(Supported)) {
writeToAppendix(
formatProperty,
bacnetObjectType,
bacnetObjectProperty,
conformanceCode,
"SKIPPED",
verboseOutput);
setResult(true);
} else if (!bacnetObjectPropertyIsFound
&& (conformanceCode.contains(read) || conformanceCode.equals(write))
&& supported.equals(Supported)
&& !bacnetObjectProperty.equals("Property List")) {
writeToAppendix(
formatProperty,
bacnetObjectType,
bacnetObjectProperty,
conformanceCode,
"FAILED",
verboseOutput);
setResult(false);
} else if (!bacnetObjectPropertyIsFound && conformanceCode.contains(optional)
&& supported.equals(Supported) && !bacnetObjectProperty.equals("Property List")) {
writeToAppendix(formatProperty, bacnetObjectType, bacnetObjectProperty, conformanceCode,
"PASSED/WARNING", verboseOutput);
} else if (!bacnetObjectPropertyIsFound
&& conformanceCode.contains(optional)
&& supported.equals(Supported)
&& !bacnetObjectProperty.equals("Property List")) {
writeToAppendix(
formatProperty,
bacnetObjectType,
bacnetObjectProperty,
conformanceCode,
"PASSED/WARNING",
verboseOutput);
setResult(true);
} else if (bacnetObjectPropertyIsFound && supported.equals(Supported)
&& !bacnetObjectProperty.equals("Property List")) {
writeToAppendix(formatProperty, bacnetObjectType, bacnetObjectProperty, conformanceCode,
"PASSED", verboseOutput);
} else if (bacnetObjectPropertyIsFound
&& supported.equals(Supported)
&& !bacnetObjectProperty.equals("Property List")) {
writeToAppendix(
formatProperty,
bacnetObjectType,
bacnetObjectProperty,
conformanceCode,
"PASSED",
verboseOutput);
setResult(true);
}
}
}

private void writeToAppendix(String formatProperty, String key, String bacnetObjectProperty, String conformanceCode,
String lineresult, boolean verboseOutput) {
private void writeToAppendix(
String formatProperty,
String key,
String bacnetObjectProperty,
String conformanceCode,
String lineresult,
boolean verboseOutput) {
if (!verboseOutput & (lineresult.contains("FAILED") | lineresult.contains("PASSED/WARNING"))) {
String appendix = String.format(formatProperty, key, bacnetObjectProperty,
conformanceCode, lineresult);
String appendix =
String.format(formatProperty, key, bacnetObjectProperty, conformanceCode, lineresult);
this.result.put(key, appendix);
} else if (verboseOutput) {
String appendix = String.format(formatProperty, key, bacnetObjectProperty,
conformanceCode, lineresult);
String appendix =
String.format(formatProperty, key, bacnetObjectProperty, conformanceCode, lineresult);
this.result.put(key, appendix);
}
}
Expand All @@ -89,12 +163,14 @@ private ArrayList<String> getMapKeys(Set<String> mapKeySet, String bacnetObjectT
}

private void setResult(boolean propertyValidated) {
if(count == 0) {
if (count == 0) {
this.testPassed = propertyValidated;
} else {
if(!this.testPassed) {
if (!this.testPassed) {
return;
} else { this.testPassed = propertyValidated; }
} else {
this.testPassed = propertyValidated;
}
}
count++;
}
Expand All @@ -107,3 +183,4 @@ public boolean getResult() {
return this.testPassed;
}
}