Add toString method for Distribution class and unit tests for various distributions
This commit is contained in:
@@ -32,6 +32,36 @@ public interface Distribution {
|
||||
return sample;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a string representation of the distribution.
|
||||
* In case the distribution is null, an empty string is returned.
|
||||
*
|
||||
* @param distribution The distribution to represent.
|
||||
* @return A string representation of the distribution.
|
||||
* @throws IllegalArgumentException if the field cannot be accessed
|
||||
* @throws IllegalAccessException if the field cannot be accessed
|
||||
*/
|
||||
public static String toString(Distribution distribution) throws IllegalArgumentException, IllegalAccessException {
|
||||
if (distribution == null)
|
||||
return "";
|
||||
|
||||
var builder = new StringBuilder();
|
||||
var dist = distribution.getClass();
|
||||
|
||||
builder.append(dist.getSimpleName()).append('(');
|
||||
for (var param : dist.getFields()) {
|
||||
var paramValue = param.get(distribution);
|
||||
var str = paramValue instanceof Distribution
|
||||
? toString((Distribution) paramValue)
|
||||
: paramValue;
|
||||
|
||||
builder.append(str).append(", ");
|
||||
}
|
||||
|
||||
builder.delete(builder.length() - 2, builder.length()).append(')');
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Represents an exponential distribution.
|
||||
*/
|
||||
|
||||
@@ -8,6 +8,27 @@ import net.berack.upo.valpre.rand.Distribution;
|
||||
|
||||
public class TestInteractions {
|
||||
|
||||
@Test
|
||||
public void distributionToString() throws Exception {
|
||||
var exp = new Distribution.Exponential(1.0);
|
||||
assertEquals("Exponential(1.0)", Distribution.toString(exp));
|
||||
|
||||
var uniform = new Distribution.Uniform(0.0, 1.0);
|
||||
assertEquals("Uniform(0.0, 1.0)", Distribution.toString(uniform));
|
||||
|
||||
var erlang = new Distribution.Erlang(2, 1.0);
|
||||
assertEquals("Erlang(2, 1.0)", Distribution.toString(erlang));
|
||||
|
||||
var normal = new Distribution.Normal(3.2, 0.6);
|
||||
assertEquals("Normal(3.2, 0.6)", Distribution.toString(normal));
|
||||
|
||||
var normalBoxMuller = new Distribution.NormalBoxMuller(3.2, 0.6);
|
||||
assertEquals("NormalBoxMuller(3.2, 0.6)", Distribution.toString(normalBoxMuller));
|
||||
|
||||
var unavailable = new Distribution.UnavailableTime(0.1, exp);
|
||||
assertEquals("UnavailableTime(0.1, Exponential(1.0))", Distribution.toString(unavailable));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void netToString() {
|
||||
var net = new Net();
|
||||
|
||||
Reference in New Issue
Block a user