Ver Fonte

better tensor tests

David Sehnal há 7 anos atrás
pai
commit
75829b4702

+ 1 - 0
src/mol-io/writer/cif/encoder.ts

@@ -14,6 +14,7 @@ import Encoder from '../encoder'
 // TODO: add "repeat encoding"? [[1, 2], [1, 2], [1, 2]] --- Repeat ---> [[1, 2], 3]
 // TODO: Add "higher level fields"? (i.e. generalization of repeat)
 // TODO: Add tensor field definition
+// TODO: align "data blocks" to 8 byte offsets
 
 export const enum FieldType {
     Str, Int, Float

+ 52 - 0
src/mol-math/linear-algebra/_spec/tensor.spec.ts

@@ -74,6 +74,7 @@ describe('tensor', () => {
         for (let i = 0; i < 3; i++) {
             for (let j = 0; j < 4; j++) {
                 M.set(data, i, j, o);
+                expect(M.get(data, i, j)).toBe(o);
                 exp[o] = o;
                 o++;
             }
@@ -91,6 +92,7 @@ describe('tensor', () => {
         for (let j = 0; j < 4; j++) {
             for (let i = 0; i < 3; i++) {
                 M.set(data, i, j, o);
+                expect(M.get(data, i, j)).toBe(o);
                 exp[o] = o;
                 o++;
             }
@@ -109,6 +111,7 @@ describe('tensor', () => {
             for (let j = 0; j < 4; j++) {
                 for (let k = 0; k < 5; k++) {
                     M.set(data, i, j, k, o);
+                    expect(M.get(data, i, j, k)).toBe(o);
                     exp[o] = o;
                     o++;
                 }
@@ -128,6 +131,7 @@ describe('tensor', () => {
             for (let k = 0; k < 3; k++) {
                 for (let j = 0; j < 3; j++) {
                     M.set(data, i, j, k, o);
+                    expect(M.get(data, i, j, k)).toBe(o);
                     exp[o] = o;
                     o++;
                 }
@@ -147,6 +151,7 @@ describe('tensor', () => {
             for (let i = 0; i < 3; i++) {
                 for (let k = 0; k < 3; k++) {
                     M.set(data, i, j, k, o);
+                    expect(M.get(data, i, j, k)).toBe(o);
                     exp[o] = o;
                     o++;
                 }
@@ -165,6 +170,7 @@ describe('tensor', () => {
             for (let k = 0; k < 3; k++) {
                 for (let i = 0; i < 3; i++) {
                     M.set(data, i, j, k, o);
+                    expect(M.get(data, i, j, k)).toBe(o);
                     exp[o] = o;
                     o++;
                 }
@@ -184,6 +190,7 @@ describe('tensor', () => {
             for (let i = 0; i < 3; i++) {
                 for (let j = 0; j < 3; j++) {
                     M.set(data, i, j, k, o);
+                    expect(M.get(data, i, j, k)).toBe(o);
                     exp[o] = o;
                     o++;
                 }
@@ -203,6 +210,7 @@ describe('tensor', () => {
             for (let j = 0; j < 3; j++) {
                 for (let i = 0; i < 3; i++) {
                     M.set(data, i, j, k, o);
+                    expect(M.get(data, i, j, k)).toBe(o);
                     exp[o] = o;
                     o++;
                 }
@@ -211,4 +219,48 @@ describe('tensor', () => {
 
         expect(data).toEqual(exp);
     });
+
+    it('4d jikl', () => {
+        const M = T.Space([2, 3, 4, 5], [1, 0, 2, 3]);
+        const data = M.create();
+        const exp = new Float64Array(2 * 3 * 4 * 5)
+
+        let o = 0;
+        for (let j = 0; j < 3; j++) {
+            for (let i = 0; i < 2; i++) {
+                for (let k = 0; k < 4; k++) {
+                    for (let l = 0; l < 5; l++) {
+                        M.set(data, i, j, k, l, o);
+                        expect(M.get(data, i, j, k, l)).toBe(o);
+                        exp[o] = o;
+                        o++;
+                    }
+                }
+            }
+        }
+
+        expect(data).toEqual(exp);
+    });
+
+    it('4d jilk', () => {
+        const M = T.Space([2, 3, 4, 5], [1, 0, 3, 2]);
+        const data = M.create();
+        const exp = new Float64Array(2 * 3 * 4 * 5)
+
+        let o = 0;
+        for (let j = 0; j < 3; j++) {
+            for (let i = 0; i < 2; i++) {
+                for (let l = 0; l < 5; l++) {
+                    for (let k = 0; k < 4; k++) {
+                        M.set(data, i, j, k, l, o);
+                        expect(M.get(data, i, j, k, l)).toBe(o);
+                        exp[o] = o;
+                        o++;
+                    }
+                }
+            }
+        }
+
+        expect(data).toEqual(exp);
+    });
 });