final String spec1value1 = "spec1value1";
final String spec2value1 = "spec2value1";
final InMemoryViewComputationResultModel results1 = new InMemoryViewComputationResultModel();
results1.setViewCycleExecutionOptions(ViewCycleExecutionOptions.builder().setValuationTime(Instant.now()).create());
results1.addValue(CALC_CONFIG, new ComputedValueResult(_spec1, spec1value1, AggregatedExecutionLog.EMPTY));
results1.addValue(CALC_CONFIG, new ComputedValueResult(_spec2, spec2value1, AggregatedExecutionLog.EMPTY));
final ResultsCache cache = new ResultsCache();
cache.put(results1);
final ResultsCache.Result result1_1 = cache.getResult(CALC_CONFIG, _spec1, String.class);
final ResultsCache.Result result2_1 = cache.getResult(CALC_CONFIG, _spec2, String.class);
assertEquals(spec1value1, result1_1.getValue());
assertEquals(spec2value1, result2_1.getValue());
assertNull(result1_1.getHistory());
assertNull(result2_1.getHistory());
assertTrue(result1_1.isUpdated());
assertTrue(result2_1.isUpdated());
final String spec1value2 = "spec1value2";
final InMemoryViewComputationResultModel results2 = new InMemoryViewComputationResultModel();
results2.setViewCycleExecutionOptions(ViewCycleExecutionOptions.builder().setValuationTime(Instant.now()).create());
results2.addValue(CALC_CONFIG, new ComputedValueResult(_spec1, spec1value2, AggregatedExecutionLog.EMPTY));
cache.put(results2);
final ResultsCache.Result result1_2 = cache.getResult(CALC_CONFIG, _spec1, String.class);
final ResultsCache.Result result2_2 = cache.getResult(CALC_CONFIG, _spec2, String.class);
assertEquals(spec1value2, result1_2.getValue());