package com.github.chen0040.rl.learning.utils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.serializer.SerializerFeature; import com.github.chen0040.rl.utils.Matrix; import org.testng.annotations.Test; import java.util.Random; import static org.assertj.core.api.Java6Assertions.assertThat; public class MatrixUnitTest { private static final Random random = new Random(42); @Test public void testJsonSerialization() { Matrix matrix = new Matrix(10, 10); matrix.set(0, 0, 10); matrix.set(4, 2, 2); matrix.set(3, 3, 2); assertThat(matrix.get(0, 0)).isEqualTo(10); assertThat(matrix.get(4, 2)).isEqualTo(2); assertThat(matrix.get(3, 3)).isEqualTo(2); assertThat(matrix.get(4, 4)).isEqualTo(0); assertThat(matrix.getRowCount()).isEqualTo(10); assertThat(matrix.getColumnCount()).isEqualTo(10); String json = JSON.toJSONString(matrix, SerializerFeature.PrettyFormat); System.out.println(json); Matrix matrix2 = JSON.parseObject(json, Matrix.class); assertThat(matrix).isEqualTo(matrix2); for(int i=0; i < matrix.getRowCount(); ++i){ for(int j=0; j < matrix.getColumnCount(); ++j) { assertThat(matrix.get(i, j)).isEqualTo(matrix2.get(i, j)); } } } @Test public void testJsonSerialization_Random() { Matrix matrix = new Matrix(10, 10); for(int i=0; i < matrix.getRowCount(); ++i){ for(int j=0; j < matrix.getColumnCount(); ++j){ matrix.set(i, j, random.nextDouble()); } } Matrix matrix2 = matrix.makeCopy(); assertThat(matrix).isEqualTo(matrix2); String json = JSON.toJSONString(matrix); Matrix matrix3 = JSON.parseObject(json, Matrix.class); assertThat(matrix2).isEqualTo(matrix3); for(int i=0; i < matrix.getRowCount(); ++i){ for(int j=0; j < matrix.getColumnCount(); ++j){ assertThat(matrix2.get(i, j)).isEqualTo(matrix3.get(i, j)); } } } }