1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
// Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.result;
import com.yahoo.data.access.slime.SlimeAdapter;
import com.yahoo.slime.Cursor;
import com.yahoo.slime.Slime;
import com.yahoo.tensor.Tensor;
import com.yahoo.tensor.serialization.TypedBinaryFormat;
import org.junit.Test;
import java.util.stream.Collectors;
import static org.junit.Assert.assertEquals;
/**
* @author bratseth
*/
public class FeatureDataTestCase {
private static final double delta = 0.00000001;
@Test
public void testFeatureData() {
Cursor features = new Slime().setObject();
features.setDouble("scalar1", 1.5);
features.setDouble("scalar2", 2.5);
Tensor tensor1 = Tensor.from("tensor(x[3]):[1.5, 2, 2.5]");
features.setData("tensor1", TypedBinaryFormat.encode(tensor1));
Tensor tensor2 = Tensor.from(0.5);
features.setData("tensor2", TypedBinaryFormat.encode(tensor2));
FeatureData featureData = new FeatureData(new SlimeAdapter(features));
assertEquals("scalar1,scalar2,tensor1,tensor2",
featureData.featureNames().stream().sorted().collect(Collectors.joining(",")));
assertEquals(1.5, featureData.getDouble("scalar1"), delta);
assertEquals(2.5, featureData.getDouble("scalar2"), delta);
assertEquals(Tensor.from(1.5), featureData.getTensor("scalar1"));
assertEquals(Tensor.from(2.5), featureData.getTensor("scalar2"));
assertEquals(tensor1, featureData.getTensor("tensor1"));
assertEquals(tensor2, featureData.getTensor("tensor2"));
String expectedJson =
"{" +
"\"scalar1\":1.5," +
"\"scalar2\":2.5," +
"\"tensor1\":{\"type\":\"tensor(x[3])\",\"cells\":[{\"address\":{\"x\":\"0\"},\"value\":1.5},{\"address\":{\"x\":\"1\"},\"value\":2.0},{\"address\":{\"x\":\"2\"},\"value\":2.5}]}," +
"\"tensor2\":{\"type\":\"tensor()\",\"cells\":[{\"address\":{},\"value\":0.5}]}" +
"}";
assertEquals(expectedJson, featureData.toJson());
}
}
|