/** * Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.financial.analytics.fudgemsg; import org.fudgemsg.FudgeMsg; import org.fudgemsg.FudgeMsgFactory; import org.fudgemsg.MutableFudgeMsg; import org.testng.annotations.Test; import com.opengamma.analytics.math.function.Function; import com.opengamma.analytics.util.serialization.InvokedSerializedForm; import com.opengamma.util.test.TestGroup; /** * */ @Test(groups = TestGroup.UNIT) public class TestStatefulFunction { private final boolean _boolean; private final int _int; public TestStatefulFunction(final boolean aBoolean, final int anInt) { _boolean = aBoolean; _int = anInt; } public Function<Double, Double> getSurface(final Double a, final Double b) { return new Function<Double, Double>() { @Override public Double evaluate(final Double... x) { return _boolean ? _int * a * x[0] : a * x[0] + b * x[1] * x[1]; } public Object writeReplace() { return new InvokedSerializedForm(TestStatefulFunction.this, "getSurface", a, b); } }; } public FudgeMsg toFudgeMsg(final FudgeMsgFactory f) { final MutableFudgeMsg msg = f.newMessage(); msg.add("boolean", _boolean); msg.add("int", _int); return msg; } public static TestStatefulFunction fromFudgeMsg(final FudgeMsg msg) { return new TestStatefulFunction(msg.getBoolean("boolean"), msg.getInt("int")); } }