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
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import kotlin.jvm.JvmInline
import kotlin.jvm.JvmName
import kotlin.jvm.JvmSynthetic
import kotlin.math.abs
import kotlin.math.absoluteValue
import me.saket.bytesize.internal.commonCompareTo
import me.saket.bytesize.internal.commonDiv
import me.saket.bytesize.internal.commonMinus
Expand All @@ -30,6 +31,10 @@ inline val Number.mebibytes: BinaryByteSize
inline val Number.gibibytes: BinaryByteSize
get() = BinaryByteSize(BytesPerGiB) * this

@get:JvmSynthetic
inline val BinaryByteSize.absoluteValue: BinaryByteSize
get() = BinaryByteSize(inWholeBytes.absoluteValue)

/** Represents power-of-two byte sizes. */
@JvmInline
value class BinaryByteSize(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import kotlin.jvm.JvmInline
import kotlin.jvm.JvmName
import kotlin.jvm.JvmSynthetic
import kotlin.math.abs
import kotlin.math.absoluteValue
import me.saket.bytesize.internal.BitsPerByte
import me.saket.bytesize.internal.commonCompareTo
import me.saket.bytesize.internal.commonDiv
Expand All @@ -31,6 +32,10 @@ inline val Number.megabits: DecimalBitSize
inline val Number.gigabits: DecimalBitSize
get() = DecimalBitSize(BitsPerGb) * this

@get:JvmSynthetic
inline val DecimalBitSize.absoluteValue: DecimalBitSize
get() = DecimalBitSize(inWholeBits.absoluteValue)

/** Represents power-of-ten bit sizes. */
@JvmInline
value class DecimalBitSize(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import kotlin.jvm.JvmInline
import kotlin.jvm.JvmName
import kotlin.jvm.JvmSynthetic
import kotlin.math.abs
import kotlin.math.absoluteValue
import me.saket.bytesize.internal.commonCompareTo
import me.saket.bytesize.internal.commonDiv
import me.saket.bytesize.internal.commonMinus
Expand All @@ -30,6 +31,10 @@ inline val Number.megabytes: DecimalByteSize
inline val Number.gigabytes: DecimalByteSize
get() = DecimalByteSize(BytesPerGB) * this

@get:JvmSynthetic
inline val DecimalByteSize.absoluteValue: DecimalByteSize
get() = DecimalByteSize(inWholeBytes.absoluteValue)

/** Represents power-of-ten byte sizes. */
@JvmInline
value class DecimalByteSize(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,13 @@ class BinaryByteSizeTest {
assertThat(1.mebibytes / 2.binaryBytes).isEqualTo(524_288.0)
}

@Test fun absolute_value() {
assertThat(5.mebibytes.absoluteValue).isEqualTo(5.mebibytes)
assertThat((-5).mebibytes.absoluteValue).isEqualTo(5.mebibytes)
assertThat((-5).mebibytes.absoluteValue).isInstanceOf<BinaryByteSize>()
assertThat(0.binaryBytes.absoluteValue).isEqualTo(0.binaryBytes)
}

@Test fun format_to_string() {
assertThat(200.binaryBytes).hasToString("200 B")
assertThat(345.kibibytes).hasToString("345 KiB")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,13 @@ class DecimalBitSizeTest {
assertThat(1.megabits / 2.decimalBits).isEqualTo(500_000.0)
}

@Test fun absolute_value() {
assertThat(5.megabits.absoluteValue).isEqualTo(5.megabits)
assertThat((-5).megabits.absoluteValue).isEqualTo(5.megabits)
assertThat((-5).megabits.absoluteValue).isInstanceOf<DecimalBitSize>()
assertThat(0.decimalBits.absoluteValue).isEqualTo(0.decimalBits)
}

@Test fun format_to_string() {
assertThat(4.decimalBits).hasToString("4 b")
assertThat(430.decimalBits).hasToString("430 b")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,13 @@ class DecimalByteSizeTest {
assertThat(1.megabytes / 2.decimalBytes).isEqualTo(500_000.0)
}

@Test fun absolute_value() {
assertThat(5.megabytes.absoluteValue).isEqualTo(5.megabytes)
assertThat((-5).megabytes.absoluteValue).isEqualTo(5.megabytes)
assertThat((-5).megabytes.absoluteValue).isInstanceOf<DecimalByteSize>()
assertThat(0.decimalBytes.absoluteValue).isEqualTo(0.decimalBytes)
}

@Test fun trim_empty_decimals_from_toString() {
assertThat(200.decimalBytes).hasToString("200 B")
assertThat(345.kilobytes).hasToString("345 KB")
Expand Down
Loading