### Question:
ContractDetailsImpl implements ContractDetails { @Override public synchronized int getStorageSize() { return keys.size(); } ContractDetailsImpl(byte[] encoded, TrieStore.Pool trieStorePool, int memoryStorageLimit);  ContractDetailsImpl(byte[] address, Trie trie, byte[] code, TrieStore.Pool trieStorePool, int memoryStorageLimit); @Override synchronized void put(DataWord key, DataWord value); @Override synchronized void putBytes(DataWord key, byte[] bytes); @Override synchronized DataWord get(DataWord key); @Override synchronized byte[] getBytes(DataWord key); @Override byte[] getCode(); @Override void setCode(byte[] code); @Override synchronized byte[] getStorageHash(); @Override void setDirty(boolean dirty); @Override void setDeleted(boolean deleted); @Override boolean isDirty(); @Override boolean isDeleted(); @Override byte[] getEncoded(); @VisibleForTesting byte[] getEncodedOldFormat(); @Override synchronized int getStorageSize(); @Override synchronized Set<DataWord> getStorageKeys(); @Override synchronized Map<DataWord, DataWord> getStorage(@Nullable Collection<DataWord> keys); @Override synchronized Map<DataWord, DataWord> getStorage(); @Override synchronized void setStorage(List<DataWord> storageKeys, List<DataWord> storageValues); @Override synchronized void setStorage(Map<DataWord, DataWord> storage); @Override byte[] getAddress(); @Override void setAddress(byte[] address); @Override synchronized void syncStorage(); @Override synchronized ContractDetails getSnapshotTo(byte[] hash); @Override boolean isNullObject(); @Override byte[] getCodeHash(); Trie getTrie(); boolean hasExternalStorage(); String getDataSourceName(); void fixCodeBy(byte[] otherCodeHash);  }### Answer:
@Test public void getStorageSizeInEmptyDetails() { ContractDetailsImpl details = buildContractDetails(new HashMapDB()); Assert.assertEquals(0, details.getStorageSize()); }