Skip to content

Commit

Permalink
More testing.
Browse files Browse the repository at this point in the history
  • Loading branch information
mihxil committed Jan 21, 2023
1 parent 98f309f commit fdbf958
Show file tree
Hide file tree
Showing 14 changed files with 100 additions and 30 deletions.
6 changes: 6 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@



.PHONY: act
act:
act --job build
16 changes: 4 additions & 12 deletions README.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -435,12 +435,9 @@ Like this it can be consulted
.Accessing configuration
[source,java]
----
import static org.meeuw.configuration.*;
import static org.meeuw.math.text.spi.FormatService.*;
Configuration configuration = ConfigurationService.getConfiguration();
NumberConfiguration aspect = configuration.getAspect(NumberConfiguration.class);
int minimalExponent = aspect.getMinimalExponent();
include::mihxil-math/src/test/java/org/meeuw/test/examples/ConfigurationExample.java[tag=import]
...
include::mihxil-math/src/test/java/org/meeuw/test/examples/ConfigurationExample.java[tag=access, indent=0]
----
This would however probably mainly be used in _implementations_.

Expand All @@ -452,12 +449,7 @@ Actual configuration can be done in two basically distinct ways.
.temporary overrides
[source,java]
----
Configuration configuration = ConfigurationService.getConfiguration();
ConfiguraationService.setConfiguration(configuration.toBuilder().aspect(NumberConfiguration.class, (nc) -> nc.withMinimalExponent(8)).build());
... code ...
ConfigurationService.resetToDefaults();
include::mihxil-math/src/test/java/org/meeuw/test/examples/ConfigurationExample.java[tag=configurationService,indent=-]
----

There are some utilities in `ConfigurationService` that makes this process a bit easier.
Expand Down
3 changes: 3 additions & 0 deletions TODO.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
= todo

-
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,29 @@ public static void setConfiguration(Configuration configuration) {
CONFIGURATION.set(configuration);
}

/**
* @since 0.10
*/
public static void setConfiguration(Configuration configuration, Consumer<Configuration.Builder> consumer) {
Configuration.Builder builder = configuration.toBuilder();
consumer.accept(builder);
setConfiguration(builder);
}
/**
* @since 0.10
*/
public static void setConfiguration(Consumer<Configuration.Builder> consumer) {
setConfiguration(getConfiguration(), consumer);
}

/**
*
* @since 0.10
*/
public static void setConfiguration(Configuration.Builder configuration) {
setConfiguration(configuration.build());
}

/**
* Unsets the configuration thread local, effectively resetting it the default settings.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,9 +64,8 @@ public void getAndSetConfiguration() {
TestConfigurationAspect aspect = configuration.getAspect(TestConfigurationAspect.class);
int someInt = aspect.getSomeInt();
log.info(() -> String.format("some int: %d", someInt));
ConfigurationService.setConfiguration(configuration.toBuilder()
.configure(TestConfigurationAspect.class, (nc) -> nc.withSomeInt(8))
.build()
ConfigurationService.setConfiguration(builder ->
builder.configure(TestConfigurationAspect.class, (nc) -> nc.withSomeInt(8))
);
assertThat(getConfiguration()
.getAspectValue(TestConfigurationAspect.class, TestConfigurationAspect::getSomeInt)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ default void distancePositive(@ForAll(ELEMENTS) E a, @ForAll(ELEMENTS) E b) {
}

@Property
default void identifyOfIndiscernibles(@ForAll(ELEMENTS) E a) {
default void identityOfIndiscernibles(@ForAll(ELEMENTS) E a) {
assertThat(a.distanceTo(a).isZero()).isTrue();
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package org.meeuw.test.examples;
// tag::import[]

import org.meeuw.configuration.Configuration;
import org.meeuw.configuration.ConfigurationService;
import org.meeuw.math.text.configuration.NumberConfiguration;
// end::import[]
public class ConfigurationExample {

public static void access() {
// tag::access[]

Configuration configuration = ConfigurationService.getConfiguration();
NumberConfiguration aspect = configuration.getAspect(NumberConfiguration.class);
int minimalExponent = aspect.getMinimalExponent();
// end::access[]
}

public static void setConfiguration(String[] argv) {
// tag::configurationService[]
ConfigurationService.setConfiguration(builder ->
builder.configure(NumberConfiguration.class,
(numberConfiguration) -> numberConfiguration.withMinimalExponent(8)
)
);

//...code...
ConfigurationService.resetToDefaults();
// end::configurationService[]
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,9 @@ public PhysicalNumber toUnits(Unit... units) {
return toUnits(Units.of(units));
}

/**
* Converts the current physical number to a different {@link SystemOfMeasurements}.
*/
public PhysicalNumber toUnits(SystemOfMeasurements systemOfMeasurements) {
return toUnits(systemOfMeasurements.forDimensions(units.getDimensions()));
}
Expand Down
2 changes: 1 addition & 1 deletion mihxil-physics/src/main/java/org/meeuw/physics/Prefix.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
import java.util.function.Supplier;

/**
* Multiplication prefix that can be used on a {@link Unit}, to get a new {@code code} that differs a certain factor only, but has the same {@link DimensionalAnalysis}
* Multiplication prefix that can be used on a {@link Unit}, to get a new {@code Unit} that differs a certain factor only, but has the same {@link DimensionalAnalysis}
*
* @author Michiel Meeuwissen
* @since 0.4
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,9 @@

import org.meeuw.math.uncertainnumbers.field.UncertainReal;

/**
* A unit wrapping another {@link Unit} with a {@link Prefix}, and it just a multiple of that unit.
*/
public class PrefixedUnit implements Unit {

private final Unit wrapped;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@
import org.meeuw.math.uncertainnumbers.field.UncertainRealField;

/**
* There are different 'systems of measurements' in use. E.g. {@link SI} and {@link Planck}.
* <p>
*
* @author Michiel Meeuwissen
* @since 0.6
*/
Expand All @@ -32,7 +35,8 @@ public interface SystemOfMeasurements {
Unit forDimension(Dimension dimension);

/**
* Returns in this system of measurements the preferred units for the given dimensional analysis
* Returns in this system of measurements the preferred units for the given dimensional analysis. This may not
* always be unique.
*/
@NonNull
default Units forDimensions(DimensionalAnalysis dimensionalAnalysis) {
Expand All @@ -44,6 +48,14 @@ default Units forDimensions(DimensionalAnalysis dimensionalAnalysis) {
.reduce(UncertainRealField.INSTANCE.one(), UncertainReal::times);
return new CompositeUnits(siFactor, unitExponents);
}
default Units forQuantity(Quantity quantity) {
for (Units unit : getUnits()) {
if (unit.getQuantities().contains(quantity)) {
return unit;
}
}
return forDimensions(quantity.getDimensionalAnalysis());
}


default List<BaseUnit> getBaseUnits() {
Expand All @@ -58,14 +70,7 @@ default List<Units> getUnits() {
return Collections.unmodifiableList(result);
}

default Units forQuantity(Quantity quantity) {
for (Units unit : getUnits()) {
if (unit.getQuantities().contains(quantity)) {
return unit;
}
}
return forDimensions(quantity.getDimensionalAnalysis());
}


default Units forDimensions(DimensionExponent... dimensions) {
return forDimensions(DimensionalAnalysis.of(dimensions));
Expand Down
3 changes: 3 additions & 0 deletions mihxil-physics/src/main/java/org/meeuw/physics/Units.java
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,9 @@ public interface Units extends

Units DIMENSIONLESS = of(exactly(1));

/**
* The physical units form a {@link org.meeuw.math.abstractalgebra.MultiplicativeGroup}, implemented by {@link UnitsGroup}.
*/
@Override
default UnitsGroup getStructure() {
return UnitsGroup.INSTANCE;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@
import static org.meeuw.math.uncertainnumbers.field.UncertainDoubleElement.exactly;

/**
* The {@link MultiplicativeAbelianGroup} of {@link Units}.
* <p>
*
* @author Michiel Meeuwissen
* @since 0.4
*/
Expand Down Expand Up @@ -70,8 +73,9 @@ public Stream<Units> stream() {
@Override
public Units nextRandom(Random random) {
UnitExponent[] units = new UnitExponent[SIUnit.values().length];

for (int i = 0; i < units.length; i++) {
units[i] = new UnitExponent(SIUnit.values()[i], random.nextInt(20));
units[i] = new UnitExponent(SIUnit.values()[i], (int) (random.nextGaussian() * 3));
}
return new CompositeUnits(exactly(1), units);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,11 @@ public void c() {
assertThat(cSI.toString()).isEqualTo("(2.99792 ± 0.00005)·10⁸ m·s⁻¹");

assertThat(cSI.toUnits(Planck.INSTANCE).toString()).isEqualTo("1.00000 ± 0.00002 ℓₚ·tₚ⁻¹");

}

@Test
public void kB() {
public void BoltzmannConstant() {
assertThat(Planck.kB.toString()).isEqualTo("1 ℓₚ·tₚ⁻¹");

}

}

0 comments on commit fdbf958

Please sign in to comment.