package chart import ( "fmt" "testing" "github.com/blendlabs/go-assert" ) var ( macdExpected = []float64{ 0, 0.06381766382, 0.1641441222, 0.2817201894, 0.4033023481, 0.3924673744, 0.2983093823, 0.1561821464, -0.008916708129, -0.05210332292, -0.01649503993, 0.06667130899, 0.1751344574, 0.1657328378, 0.08257097469, -0.04265109369, -0.1875741257, -0.2091853882, -0.1518975486, -0.04781419838, 0.08025242841, 0.08881960494, 0.02183529775, -0.08904155476, -0.2214141128, -0.2321805992, -0.1656331722, -0.05373789678, 0.08083727586, 0.09475354363, 0.03209767112, -0.07534076818, -0.2050442354, -0.2138010557, -0.1458045181, -0.03293263556, 0.1022243734, 0.1163957964, 0.05372761902, -0.05393941791, -0.1840438454, -0.1933365048, -0.1259788988, -0.01382225715, 0.1205656194, 0.1339326478, 0.07044017167, -0.03805851969, -0.1689918111, -0.1791024416, } ) func TestMACDSeries(t *testing.T) { assert := assert.New(t) mockSeries := mockValueProvider{ emaXValues, emaYValues, } assert.Equal(50, mockSeries.Len()) mas := &MACDSeries{ InnerSeries: mockSeries, } var yvalues []float64 for x := 0; x < mas.Len(); x++ { _, y := mas.GetValue(x) yvalues = append(yvalues, y) } assert.NotEmpty(yvalues) for index, vy := range yvalues { assert.InDelta(vy, macdExpected[index], emaDelta, fmt.Sprintf("delta @ %d actual: %0.9f expected: %0.9f", index, vy, macdExpected[index])) } }