-
Notifications
You must be signed in to change notification settings - Fork 163
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
merged #ft-389-spec-metadata. Reimplemented all html-reports
- Loading branch information
Showing
60 changed files
with
13,718 additions
and
10,288 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
13 changes: 13 additions & 0 deletions
13
galen-core/src/main/java/com/galenframework/reports/json/ToStringSerializer.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
package com.galenframework.reports.json; | ||
|
||
import com.fasterxml.jackson.core.JsonGenerator; | ||
import com.fasterxml.jackson.databind.JsonSerializer; | ||
import com.fasterxml.jackson.databind.SerializerProvider; | ||
import java.io.IOException; | ||
|
||
public class ToStringSerializer extends JsonSerializer { | ||
@Override | ||
public void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException { | ||
jsonGenerator.writeString(o.toString()); | ||
} | ||
} |
158 changes: 158 additions & 0 deletions
158
galen-core/src/main/java/com/galenframework/reports/model/LayoutMeta.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,158 @@ | ||
package com.galenframework.reports.model; | ||
|
||
|
||
import com.galenframework.specs.Side; | ||
import org.apache.commons.lang3.builder.EqualsBuilder; | ||
import org.apache.commons.lang3.builder.HashCodeBuilder; | ||
import org.apache.commons.lang3.builder.ToStringBuilder; | ||
|
||
public class LayoutMeta { | ||
|
||
private ObjectEdge from; | ||
private ObjectEdge to; | ||
private String expectedDistance; | ||
private String realDistance; | ||
|
||
public ObjectEdge getFrom() { | ||
return from; | ||
} | ||
|
||
public void setFrom(ObjectEdge from) { | ||
this.from = from; | ||
} | ||
|
||
public ObjectEdge getTo() { | ||
return to; | ||
} | ||
|
||
public void setTo(ObjectEdge to) { | ||
this.to = to; | ||
} | ||
|
||
public String getExpectedDistance() { | ||
return expectedDistance; | ||
} | ||
|
||
public void setExpectedDistance(String expectedDistance) { | ||
this.expectedDistance = expectedDistance; | ||
} | ||
|
||
public String getRealDistance() { | ||
return realDistance; | ||
} | ||
|
||
public void setRealDistance(String realDistance) { | ||
this.realDistance = realDistance; | ||
} | ||
|
||
|
||
public LayoutMeta() { | ||
} | ||
|
||
public LayoutMeta(ObjectEdge from, ObjectEdge to, String expectedDistance, String realDistance) { | ||
this.from = from; | ||
this.to = to; | ||
this.expectedDistance = expectedDistance; | ||
this.realDistance = realDistance; | ||
} | ||
|
||
public static class ObjectEdge { | ||
private String object; | ||
private Side edge; | ||
|
||
public ObjectEdge() { | ||
} | ||
|
||
public ObjectEdge(String object, Side edge) { | ||
this.object = object; | ||
this.edge = edge; | ||
} | ||
|
||
public Side getEdge() { | ||
return edge; | ||
} | ||
|
||
public void setEdge(Side edge) { | ||
this.edge = edge; | ||
} | ||
|
||
public String getObject() { | ||
return object; | ||
} | ||
|
||
public void setObject(String object) { | ||
this.object = object; | ||
} | ||
|
||
@Override | ||
public String toString() { | ||
return new ToStringBuilder(this) | ||
.append("object", object) | ||
.append("edge", edge) | ||
.toString(); | ||
} | ||
|
||
@Override | ||
public boolean equals(Object o) { | ||
if (this == o) return true; | ||
|
||
if (o == null || getClass() != o.getClass()) return false; | ||
|
||
ObjectEdge that = (ObjectEdge) o; | ||
|
||
return new EqualsBuilder() | ||
.append(object, that.object) | ||
.append(edge, that.edge) | ||
.isEquals(); | ||
} | ||
|
||
@Override | ||
public int hashCode() { | ||
return new HashCodeBuilder(17, 37) | ||
.append(object) | ||
.append(edge) | ||
.toHashCode(); | ||
} | ||
} | ||
|
||
|
||
public static LayoutMeta distance(String firstObject, Side firstEdge, String secondObject, Side secondEdge, String expectedDistance, String realDistance) { | ||
return new LayoutMeta(new ObjectEdge(firstObject, firstEdge), new ObjectEdge(secondObject, secondEdge), expectedDistance, realDistance); | ||
} | ||
|
||
@Override | ||
public String toString() { | ||
return new ToStringBuilder(this) | ||
.append("from", from) | ||
.append("to", to) | ||
.append("expectedDistance", expectedDistance) | ||
.append("realDistance", realDistance) | ||
.toString(); | ||
} | ||
|
||
@Override | ||
public boolean equals(Object o) { | ||
if (this == o) return true; | ||
|
||
if (o == null || getClass() != o.getClass()) return false; | ||
|
||
LayoutMeta that = (LayoutMeta) o; | ||
|
||
return new EqualsBuilder() | ||
.append(from, that.from) | ||
.append(to, that.to) | ||
.append(expectedDistance, that.expectedDistance) | ||
.append(realDistance, that.realDistance) | ||
.isEquals(); | ||
} | ||
|
||
@Override | ||
public int hashCode() { | ||
return new HashCodeBuilder(17, 37) | ||
.append(from) | ||
.append(to) | ||
.append(expectedDistance) | ||
.append(realDistance) | ||
.toHashCode(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
89 changes: 89 additions & 0 deletions
89
galen-core/src/main/java/com/galenframework/validation/MetaBasedValidation.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
package com.galenframework.validation; | ||
|
||
import com.galenframework.page.Rect; | ||
import com.galenframework.reports.model.LayoutMeta; | ||
import com.galenframework.specs.Range; | ||
import com.galenframework.specs.RangeValue; | ||
import com.galenframework.specs.Side; | ||
|
||
import static java.lang.String.format; | ||
|
||
/** | ||
* This class is used in order to validate distance between edges of two objects. | ||
* It is used by different specs so that it can also construct layout meta for each validation | ||
*/ | ||
public class MetaBasedValidation { | ||
private final String firstObject; | ||
private final String secondObject; | ||
private final Range expectedRange; | ||
private Side firstEdge = Side.LEFT; | ||
private Side secondEdge = Side.LEFT; | ||
private boolean isInverted = false; | ||
|
||
private MetaBasedValidation(String firstObject, String secondObject, Range expectedRange) { | ||
|
||
this.firstObject = firstObject; | ||
this.secondObject = secondObject; | ||
this.expectedRange = expectedRange; | ||
} | ||
|
||
public static MetaBasedValidation forObjectsWithRange(String firstObject, String secondObject, Range expectedRange) { | ||
return new MetaBasedValidation(firstObject, secondObject, expectedRange); | ||
} | ||
|
||
public MetaBasedValidation withBothEdges(Side side) { | ||
this.firstEdge = side; | ||
this.secondEdge = side; | ||
return this; | ||
} | ||
|
||
|
||
public SimpleValidationResult validate(Rect firstArea, Rect secondArea, PageValidation pageValidation, String direction) { | ||
int offset = getOffset(firstArea, secondArea); | ||
double calculatedOffset = pageValidation.convertValue(expectedRange, offset); | ||
|
||
; | ||
if (!expectedRange.holds(calculatedOffset)) { | ||
if (expectedRange.isPercentage()) { | ||
int precision = expectedRange.findPrecision(); | ||
|
||
|
||
String actualDistance = format("%s%% [%dpx]", new RangeValue(calculatedOffset, precision).toString(), offset); | ||
return SimpleValidationResult.error( | ||
format("%s %s", actualDistance, direction), | ||
LayoutMeta.distance(firstObject, firstEdge, secondObject, secondEdge, expectedRange.prettyString("%"), actualDistance) | ||
); | ||
} else { | ||
return SimpleValidationResult.error( | ||
format("%dpx %s", offset, direction), | ||
LayoutMeta.distance(firstObject, firstEdge, secondObject, secondEdge, expectedRange.prettyString(), offset + "px") | ||
); | ||
} | ||
} | ||
return SimpleValidationResult.success(LayoutMeta.distance(firstObject, firstEdge, secondObject, secondEdge, expectedRange.prettyString(), offset + "px")); | ||
} | ||
|
||
private int getOffset(Rect firstArea, Rect secondArea) { | ||
int offset = firstArea.getEdgePosition(firstEdge) - secondArea.getEdgePosition(secondEdge); | ||
if (isInverted) { | ||
return -offset; | ||
} else { | ||
return offset; | ||
} | ||
} | ||
|
||
public MetaBasedValidation withInvertedCalculation(boolean isInverted) { | ||
this.isInverted = isInverted; | ||
return this; | ||
} | ||
|
||
public MetaBasedValidation withFirstEdge(Side firstEdge) { | ||
this.firstEdge = firstEdge; | ||
return this; | ||
} | ||
|
||
public MetaBasedValidation withSecondEdge(Side secondEdge) { | ||
this.secondEdge = secondEdge; | ||
return this; | ||
} | ||
} |
Oops, something went wrong.