// Path: game-common/src/main/java/com/game/common/model/Hash.java
// public class Hash implements Comparable<Hash>, Serializable {
// 	private static final Logger log = LoggerFactory.getLogger(Hash.class);
// 	private static final long serialVersionUID = 1L;
// 
// 	public static final int LENGTH = 20; // in bytes
// 	public static final String ALGORITHM = "SHA-1";
// 
// 	protected static MessageDigest digest;
// 
// 	static {
// 		try {
// 			digest = MessageDigest.getInstance(ALGORITHM);
// 		}
// 		catch (NoSuchAlgorithmException e) {
// 			log.error("No such hashing algorithm: " + ALGORITHM);
// 			System.exit(1); // fatal error
// 		}
// 	}
// 
// 	public static Hash fromString(String hex) {
// 		Hash hash = new Hash();
// 		hash.setHex(hex);
// 
// 		return hash;
// 	}
// 
// 	public static Hash fromBytes(byte[] bytes) {
// 		Hash hash = new Hash();
// 		hash.setBytes(bytes);
// 
// 		return hash;
// 	}
// 
// 	protected String hex;
// 
// 	public Hash(String str) {
// 		try {
// 			digest.update(str.getBytes("UTF-8"));
// 		}
// 		catch (UnsupportedEncodingException e) { }
// 
// 		this.setBytes(digest.digest());
// 	}
// 
// 	private Hash() {
// 		hex = null;
// 	}
// 
// 	private void setHex(String hex) {
// 		this.hex = hex;
// 	}
// 
// 	private void setBytes(byte[] bytes) {
// 		Formatter foramtter = new Formatter();
// 
// 		for (byte b : bytes)
// 			foramtter.format("%02x", b);
// 
// 		this.hex = foramtter.toString();
// 	}
// 
// 	public byte[] getBytes() {
// 		byte[] bytes = new byte[LENGTH];
// 
// 		for (int i = 0;i < LENGTH;i++)
// 			bytes[i] = (byte) Short.parseShort(hex.substring(2 * i, 2 * (i + 1)), 16);
// 
// 		return bytes;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return hex;
// 	}
// 
// 	@Override
// 	public int hashCode() {
// 		return hex.hashCode();
// 	}
// 
// 	@Override
// 	public boolean equals(Object o) {
// 		if (!(o instanceof Hash))
// 			return false;
// 
// 		Hash h = (Hash) o;
// 		return hex.equals(h.hex);
// 	}
// 
// 	@Override
// 	public int compareTo(Hash h) {
// 		return hex.compareTo(h.hex);
// 	}
// }


import com.game.common.model.Hash;
import junit.framework.TestCase;
package com.game.common.util;



public class HashTest extends TestCase {

	public void testFromString() {
		Hash h1 = Hash.fromString("aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d");
		
		// A hash generated from a hex string, should return the same hex string from toString()
		assertEquals(h1.toString(), "aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d");
	}

	public void testFromBytes() {
		Hash h1 = new Hash("hello");
		Hash h2 = Hash.fromBytes(h1.getBytes());
		
		// A generated hash, and a hash constructed from byte[] should equal
		assertEquals(h1, h2);
	}

	public void testToString() {
		Hash h1 = new Hash("hello");
		
		// toString should return a hex representation of the SHA1 hash
		assertEquals(h1.toString(), "aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d");
	}

	public void testEqualsObject() {
		Hash h1 = new Hash("hello");
		Hash h2 = new Hash("hello");
// Path: game-common/src/main/java/com/game/common/model/Hash.java
// public class Hash implements Comparable<Hash>, Serializable {
// 	private static final Logger log = LoggerFactory.getLogger(Hash.class);
// 	private static final long serialVersionUID = 1L;
// 
// 	public static final int LENGTH = 20; // in bytes
// 	public static final String ALGORITHM = "SHA-1";
// 
// 	protected static MessageDigest digest;
// 
// 	static {
// 		try {
// 			digest = MessageDigest.getInstance(ALGORITHM);
// 		}
// 		catch (NoSuchAlgorithmException e) {
// 			log.error("No such hashing algorithm: " + ALGORITHM);
// 			System.exit(1); // fatal error
// 		}
// 	}
// 
// 	public static Hash fromString(String hex) {
// 		Hash hash = new Hash();
// 		hash.setHex(hex);
// 
// 		return hash;
// 	}
// 
// 	public static Hash fromBytes(byte[] bytes) {
// 		Hash hash = new Hash();
// 		hash.setBytes(bytes);
// 
// 		return hash;
// 	}
// 
// 	protected String hex;
// 
// 	public Hash(String str) {
// 		try {
// 			digest.update(str.getBytes("UTF-8"));
// 		}
// 		catch (UnsupportedEncodingException e) { }
// 
// 		this.setBytes(digest.digest());
// 	}
// 
// 	private Hash() {
// 		hex = null;
// 	}
// 
// 	private void setHex(String hex) {
// 		this.hex = hex;
// 	}
// 
// 	private void setBytes(byte[] bytes) {
// 		Formatter foramtter = new Formatter();
// 
// 		for (byte b : bytes)
// 			foramtter.format("%02x", b);
// 
// 		this.hex = foramtter.toString();
// 	}
// 
// 	public byte[] getBytes() {
// 		byte[] bytes = new byte[LENGTH];
// 
// 		for (int i = 0;i < LENGTH;i++)
// 			bytes[i] = (byte) Short.parseShort(hex.substring(2 * i, 2 * (i + 1)), 16);
// 
// 		return bytes;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return hex;
// 	}
// 
// 	@Override
// 	public int hashCode() {
// 		return hex.hashCode();
// 	}
// 
// 	@Override
// 	public boolean equals(Object o) {
// 		if (!(o instanceof Hash))
// 			return false;
// 
// 		Hash h = (Hash) o;
// 		return hex.equals(h.hex);
// 	}
// 
// 	@Override
// 	public int compareTo(Hash h) {
// 		return hex.compareTo(h.hex);
// 	}
// }


// Path: game-common/src/test/java/com/game/common/util/HashTest.java
import com.game.common.model.Hash;
import junit.framework.TestCase;

package com.game.common.util;



public class HashTest extends TestCase {

	public void testFromString() {
		Hash h1 = Hash.fromString("aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d");
		
		// A hash generated from a hex string, should return the same hex string from toString()
		assertEquals(h1.toString(), "aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d");
	}

	public void testFromBytes() {
		Hash h1 = new Hash("hello");
		Hash h2 = Hash.fromBytes(h1.getBytes());
		
		// A generated hash, and a hash constructed from byte[] should equal
		assertEquals(h1, h2);
	}

	public void testToString() {
		Hash h1 = new Hash("hello");
		
		// toString should return a hex representation of the SHA1 hash
		assertEquals(h1.toString(), "aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d");
	}

	public void testEqualsObject() {
		Hash h1 = new Hash("hello");
		Hash h2 = new Hash("hello");
		Hash h3 = new Hash("good bye");