summaryrefslogtreecommitdiff
path: root/src/main/java/sevenUnits/unit
AgeCommit message (Collapse)Author
2025-06-07Fix e-notation & consolidate expression parsingAdrien Hopkins
This commit moves all of the expression formatting code to one method, and changes it so that it works with things like '1e+2'. This does mean that I had to require spaces for addition and subtraction, but without that, the rules would be complicated.
2025-06-04Add version numbers to all @since tagsAdrien Hopkins
Specifically, for every @since tag with a date, I added another that contains the correspending version. I did not add date @since tags to comments that do not have them, as that would be too tedious for what it's worth. These dates could still be found by using git bisect though.
2025-06-04Update copyright notices' yearsAdrien Hopkins
I used the Git history for years after 2019, and only included 2019 or 2018 if they were already there. I also added copyright notices to all code files that don't already have them.
2025-06-04Remove most comment warningsAdrien Hopkins
In some cases I've used @SuppressWarnings, which Gradle doesn't seem to respect, but I've solved all the other ones.
2025-05-30Ensure LinearUnit&Prefix ==/hash obey contractsAdrien Hopkins
Previously, these classes' equals() and hashCode() methods did not obey the contracts: For equals(), I considered two values equal even if there was a very small deviation, in order to avoid floating-point error. This equals relation is not transitive (i.e. it is possible that a = b && b = c but a ≠ c), violating the contract of equals. This also makes it impossible to properly implement hashCode, as if two values are equal, they must have the same hash code. The solution I had provided is an ineffective hack, which could mess with hash maps and sets. I have changed the implementation to demand exact equality. I have also provided equalsApproximately() methods to both classes that use the old behaviour. Hash codes are only really used for hash maps, and the old implementation doesn't even achieve its purpose, so I did not add a method to return the old hash behaviour.
2025-05-30Remove Unitlike/MultiUnitAdrien Hopkins
I ended up never using this code - it was simpler to just use lists of units and values. Making a whole new object for lists of units, and an abstract class for things that convert things other than doubles, is needlessly complicated, and doesn't solve any major issues. For example, I still need to store each Unitlike type in a different collection, because it will have a different type.
2025-05-17Setup automated javadocAdrien Hopkins
./gradlew javadoc
2025-04-30Add more UnitDatabase testsAdrien Hopkins
2025-04-20Improve Metric base units SuppressWarnings messageAdrien Hopkins
2025-03-07convertToMulti: Compare unit bases to this.baseAdrien Hopkins
This is a necessary precondition for the conversion methods used later on in convertToMutliple, and it is simpler than the existing method. I can also be sure it works, due to the tests I just wrote.
2024-08-22Show unit/dim file errors as popupAdrien Hopkins
Previously, any error in the unit or dimension file(s) crashes the program. Instead, 7Units now ignores any invalid lines, still parsing the correct ones, and shows a popup in case any errors happen.
2024-08-22Add 1e-12 to unit sum parts before flooringAdrien Hopkins
This ensures that small errors from floor arithmetic will not, for example, cause 2 feet to be converted to 1 foot + 12 in.
2024-08-22Allow fractional exponentsAdrien Hopkins
2024-08-22Validate unit set non-emptiness & dimensionAdrien Hopkins
2024-08-22Add named unit sets to unit converterAdrien Hopkins
2024-08-22Add ability to convert expression to sum of unitsAdrien Hopkins
2024-03-24Format source code & set explicit UTF-8Adrien Hopkins
2024-03-23Add fractions using | to expressionsAdrien Hopkins
| is like /, but with higher precedence. This feature is a part of GNU Units, and was included in 7Units for compatibility.
2024-03-23Complete exponentiation of dimensionsAdrien Hopkins
Previously, you could only exponentiate individual dimensions in expressions. For example, `Length^3` was valid, but `(Length / Time)^2` was not. This is now fixed.
2024-03-03Add + and - to prefixesAdrien Hopkins
This was added to be consistent with the data file spec, which was changed for consistency with unit expressions. It may not be a common expression, but it's a bit weird that you can use +/- in units but not prefixes, even though they're in the same file!
2022-07-08Bumped version number to 0.4.0b1 & added @sincev0.4.0b1Adrien Hopkins
2022-04-19Implemented prefix settings, saving & loading of settingsAdrien Hopkins
Also fixed some bugs: - Presenter now has default values for its settings in case they don't load properly - UnitDatabase ensures its units, prefixes and dimensions have all of the names you give it
2022-04-18Implemented one-way conversion, duplicate prefixes can now be hiddenAdrien Hopkins
2022-04-18Implemented rounding and duplicate-removal settings into the new GUIAdrien Hopkins
2022-04-16Implemented the unit & prefix viewersAdrien Hopkins
2022-04-16Added a full suite of frontend testsAdrien Hopkins
(Added tests for the settings and unit/prefix viewer parts of the GUI, which are not yet implemented)
2022-04-16Removed NamedObjectProduct in favour of the regular ObjectProductAdrien Hopkins
2022-04-10Created API for settings and unit/prefix viewingAdrien Hopkins
2022-03-10Named the metric dimensions & fixed NameSymbol.toStringAdrien Hopkins
2022-03-10Simplified toString of common unit classesAdrien Hopkins
2022-02-26Implemented expression conversion, tests now passAdrien Hopkins
2022-02-26Implemented unit conversion, with a few problemsAdrien Hopkins
TabbedView now displays its units, but with their toString method which shows their definition in addition to their name
2021-11-04Added a bunch of tests related to unit valuesAdrien Hopkins
2021-11-02Added a test for UnitDatabase.isRemovableDuplicateAdrien Hopkins
2021-10-07Added tests for getUnit and the prefixed unit mapAdrien Hopkins
Also fixed a bug where a prefixed unit map with units but no prefixes would appear empty
2021-10-04Added tests for valid & invalid dimension filesAdrien Hopkins
2021-09-27Added a test for evaluating an expression & fixed a bug it foundAdrien Hopkins
The bug: non-exact LinearUnitValue instances have their value printed as "(", i.e. "(5.0 ± 0.1) m" will be printed as "( m"
2021-09-27Added some tests for invalid unitfilesAdrien Hopkins
2021-08-26Finished initial draft of design documentAdrien Hopkins
2021-08-26Added units and dimensions to the design documentAdrien Hopkins
2021-08-07Renamed sevenUnits.math to sevenUnits.utilsAdrien Hopkins
2021-06-28Renamed project to 7UnitsAdrien Hopkins