/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.livedata.normalization; import static org.testng.AssertJUnit.assertEquals; import org.fudgemsg.MutableFudgeMsg; import org.testng.annotations.Test; import com.opengamma.core.value.MarketDataRequirementNames; import com.opengamma.livedata.server.FieldHistoryStore; import com.opengamma.util.fudgemsg.OpenGammaFudgeContext; import com.opengamma.util.test.TestGroup; /** * Test. */ @Test(groups = TestGroup.UNIT) public class ImpliedVolatilityCalculatorTest { ImpliedVolatilityCalculator _calculator = new ImpliedVolatilityCalculator(); public void best() { MutableFudgeMsg msg = OpenGammaFudgeContext.getInstance().newMessage(); msg.add(MarketDataRequirementNames.BEST_IMPLIED_VOLATILITY, 50.80); msg.add(MarketDataRequirementNames.MID_IMPLIED_VOLATILITY, 50.81); FieldHistoryStore store = new FieldHistoryStore(); store.liveDataReceived(msg); MutableFudgeMsg normalized = _calculator.apply(msg, "123", store); assertEquals(3, normalized.getAllFields().size()); assertEquals(50.80, normalized.getDouble(MarketDataRequirementNames.IMPLIED_VOLATILITY), 0.0001); } public void mid() { MutableFudgeMsg msg = OpenGammaFudgeContext.getInstance().newMessage(); msg.add(MarketDataRequirementNames.MID_IMPLIED_VOLATILITY, 50.80); msg.add(MarketDataRequirementNames.LAST_IMPLIED_VOLATILITY, 50.81); FieldHistoryStore store = new FieldHistoryStore(); store.liveDataReceived(msg); MutableFudgeMsg normalized = _calculator.apply(msg, "123", store); assertEquals(3, normalized.getAllFields().size()); assertEquals(50.80, normalized.getDouble(MarketDataRequirementNames.IMPLIED_VOLATILITY), 0.0001); } public void last() { MutableFudgeMsg msg = OpenGammaFudgeContext.getInstance().newMessage(); msg.add(MarketDataRequirementNames.LAST_IMPLIED_VOLATILITY, 50.80); msg.add(MarketDataRequirementNames.BID_IMPLIED_VOLATILITY, 50.81); msg.add(MarketDataRequirementNames.ASK_IMPLIED_VOLATILITY, 50.82); FieldHistoryStore store = new FieldHistoryStore(); store.liveDataReceived(msg); MutableFudgeMsg normalized = _calculator.apply(msg, "123", store); assertEquals(4, normalized.getAllFields().size()); assertEquals(50.80, normalized.getDouble(MarketDataRequirementNames.IMPLIED_VOLATILITY), 0.0001); } public void bidAsk() { MutableFudgeMsg msg = OpenGammaFudgeContext.getInstance().newMessage(); msg.add(MarketDataRequirementNames.BID_IMPLIED_VOLATILITY, 50.81); msg.add(MarketDataRequirementNames.ASK_IMPLIED_VOLATILITY, 50.82); FieldHistoryStore store = new FieldHistoryStore(); store.liveDataReceived(msg); MutableFudgeMsg normalized = _calculator.apply(msg, "123", store); assertEquals(3, normalized.getAllFields().size()); assertEquals(50.815, normalized.getDouble(MarketDataRequirementNames.IMPLIED_VOLATILITY), 0.0001); } public void history() { MutableFudgeMsg msg = OpenGammaFudgeContext.getInstance().newMessage(); msg.add(MarketDataRequirementNames.IMPLIED_VOLATILITY, 50.80); FieldHistoryStore store = new FieldHistoryStore(); store.liveDataReceived(msg); MutableFudgeMsg normalized = _calculator.apply(OpenGammaFudgeContext.getInstance().newMessage(), "123", store); assertEquals(1, normalized.getAllFields().size()); assertEquals(50.80, normalized.getDouble(MarketDataRequirementNames.IMPLIED_VOLATILITY), 0.0001); } }