UNPKG

3.31 kBJavaScriptView Raw
1import { test } from 'tape';
2import * as d3 from '../';
3
4test('triangle draw', function(t){
5 var triangles = d3._3d().shape('TRIANGLE').x(function(d){ return d.x; }).y(function(d){ return d.y; }).z(function(d){ return d.z; });
6 var data = [
7 [{x: 0, y: 0, z: 0},{x: 0, y: 1, z: 0},{x: 1, y: 0, z: 0}]
8 ];
9 t.equal(triangles.draw(triangles(data)[0]), 'M0,0L0,1L1,0Z');
10 t.end();
11});
12
13test('access triangle coords via array', function(t){
14 var triangles = d3._3d();
15 var data = [[1,2,3],[4,5,6],[7,8,9]];
16 t.deepEqual(triangles(data)[0].rotated, { x: 1, y: 2, z: 3 });
17 t.deepEqual(triangles(data)[1].rotated, { x: 4, y: 5, z: 6 });
18 t.deepEqual(triangles(data)[2].rotated, { x: 7, y: 8, z: 9 });
19 t.end();
20});
21
22test('access triangle coords via function', function(t){
23 var data = [{x: 1, y: 2, z: 3}, {x: 4, y: 5, z: 6}, {x: 7, y: 8, z: 9}];
24 var triangles = d3._3d().x(function(d){ return d.x; }).y(function(d){ return d.y; }).z(function(d){ return d.z; });
25 t.deepEqual(triangles(data)[0].rotated, { x: 1, y: 2, z: 3 });
26 t.deepEqual(triangles(data)[1].rotated, { x: 4, y: 5, z: 6 });
27 t.deepEqual(triangles(data)[2].rotated, { x: 7, y: 8, z: 9 });
28 t.end();
29});
30
31test('triangles are a closed path', function(t){
32 var triangles = d3._3d().shape('TRIANGLE');
33 var data = [[[0,0,0],[0,1,0],[1,0,0]]];
34 var path = triangles.draw(triangles(data)[0]);
35 var lastChar = path[path.length - 1];
36 t.equal(lastChar, 'Z');
37 t.end();
38});
39
40test('triangles are getting drawn counter-clockwise', function(t){
41 var triangles = d3._3d().shape('TRIANGLE').x(function(d){ return d.x; }).y(function(d){ return d.y; }).z(function(d){ return d.z; });
42 var data1 = [
43 [{x: 1, y: 0, z: 0}, {x: -1, y: 0, z: 0}, {x: 0, y: 1, z: 0}],
44 [{x: 0, y: 1, z: 0}, {x: 1, y: 0, z: 0}, {x: -1, y: 0, z: 0}],
45 [{x: -1, y: 0, z: 0}, {x: 0, y: 1, z: 0}, {x: 1, y: 0, z: 0}],
46 [{x: 1, y: 0, z: 0}, {x: 0, y: 1, z: 0}, {x: -1, y: 0, z: 0}],
47 [{x: -1, y: 0, z: 0}, {x: 1, y: 0, z: 0}, {x: 0, y: 1, z: 0}],
48 [{x: 0, y: 1, z: 0}, {x: -1, y: 0, z: 0}, {x: 1, y: 0, z: 0}],
49 ];
50
51 t.equal(triangles(data1)[0].ccw, true);
52 t.equal(triangles(data1)[1].ccw, true);
53 t.equal(triangles(data1)[2].ccw, true);
54 t.equal(triangles(data1)[3].ccw, false);
55 t.equal(triangles(data1)[4].ccw, false);
56 t.equal(triangles(data1)[5].ccw, false);
57 t.end();
58});
59
60test('triangles\' centroid calculation is correct', function(t){
61 var triangles = d3._3d().shape('TRIANGLE').x(function(d){ return d.x; }).y(function(d){ return d.y; }).z(function(d){ return d.z; });
62 var data = [
63 [{x: 5, y: 0, z: 0},{x: 6, y: 4, z: 0},{x: 4, y: 5, z: 0}],
64 [{x: 2, y: 1, z: 0},{x: 2, y: 2, z: 0},{x: 1, y: 1, z: 0}],
65 [{x: 1, y: 0, z: 0},{x: 1, y: 2, z: 0},{x: 2, y: 1, z: 0}],
66 [{x: 1, y: 0, z: 1},{x: 1, y: 2, z: 1},{x: 2, y: 1, z: 1}],
67 [{x: 1, y: 0, z: 2},{x: 1, y: 2, z: 2},{x: 2, y: 1, z: 2}],
68 ];
69 t.deepEqual(triangles(data)[0].centroid, { x: 5, y: 3, z: 0 });
70 t.deepEqual(triangles(data)[1].centroid, { x: 1.6666666666666667, y: 1.3333333333333333, z: 0 });
71 t.deepEqual(triangles(data)[2].centroid, { x: 1.3333333333333333, y: 1, z: 0 });
72 t.end();
73});
74
75
76
77