From 287e9271297ed840690ff9ec1aeab6a0a70c0434 Mon Sep 17 00:00:00 2001 From: Havoc Pennington Date: Tue, 24 Feb 2015 17:45:52 -0500 Subject: [PATCH] Add ConfigMemorySize type Not used at all yet, and with no unit conversions supported. --- .../com/typesafe/config/ConfigMemorySize.java | 49 +++++++++++++++++++ .../config/impl/ConfigMemorySizeTest.scala | 25 ++++++++++ 2 files changed, 74 insertions(+) create mode 100644 config/src/main/java/com/typesafe/config/ConfigMemorySize.java create mode 100644 config/src/test/scala/com/typesafe/config/impl/ConfigMemorySizeTest.scala diff --git a/config/src/main/java/com/typesafe/config/ConfigMemorySize.java b/config/src/main/java/com/typesafe/config/ConfigMemorySize.java new file mode 100644 index 00000000..350d66a9 --- /dev/null +++ b/config/src/main/java/com/typesafe/config/ConfigMemorySize.java @@ -0,0 +1,49 @@ +/** + * Copyright (C) 2015 Typesafe Inc. + */ +package com.typesafe.config; + +/** + * An immutable class representing an amount of memory. Use + * static factory methods such as {@link + * ConfigMemorySize#ofBytes(long)} to create instances. + */ +public final class ConfigMemorySize { + private final long bytes; + + private ConfigMemorySize(long bytes) { + if (bytes < 0) + throw new IllegalArgumentException("Attempt to construct ConfigMemorySize with negative number: " + bytes); + this.bytes = bytes; + } + + /** Constructs a ConfigMemorySize representing the given + * number of bytes. + */ + public static ConfigMemorySize ofBytes(long bytes) { + return new ConfigMemorySize(bytes); + } + + /** Gets the size in bytes. + */ + public long toBytes() { + return bytes; + } + + @Override + public boolean equals(Object other) { + if (other instanceof ConfigMemorySize) { + return ((ConfigMemorySize)other).bytes == this.bytes; + } else { + return false; + } + } + + @Override + public int hashCode() { + // in Java 8 this can become Long.hashCode(bytes) + return Long.valueOf(bytes).hashCode(); + } + +} + diff --git a/config/src/test/scala/com/typesafe/config/impl/ConfigMemorySizeTest.scala b/config/src/test/scala/com/typesafe/config/impl/ConfigMemorySizeTest.scala new file mode 100644 index 00000000..378c9476 --- /dev/null +++ b/config/src/test/scala/com/typesafe/config/impl/ConfigMemorySizeTest.scala @@ -0,0 +1,25 @@ +/** + * Copyright (C) 2015 Typesafe Inc. + */ +package com.typesafe.config.impl + +import org.junit.Assert._ +import org.junit._ +import com.typesafe.config.ConfigMemorySize + +class ConfigMemorySizeTest extends TestUtils { + + @Test + def testEquals() { + assertTrue("Equal ConfigMemorySize are equal", + ConfigMemorySize.ofBytes(10).equals(ConfigMemorySize.ofBytes(10))) + assertTrue("Different ConfigMemorySize are not equal", + !ConfigMemorySize.ofBytes(10).equals(ConfigMemorySize.ofBytes(11))) + } + + @Test + def testToUnits() { + val kilobyte = ConfigMemorySize.ofBytes(1024) + assertEquals(1024, kilobyte.toBytes) + } +}