diff --git a/src/main/js/sketchLibrary/SrlShape.js b/src/main/js/sketchLibrary/SrlShape.js index b1de387..0d195d9 100644 --- a/src/main/js/sketchLibrary/SrlShape.js +++ b/src/main/js/sketchLibrary/SrlShape.js @@ -281,7 +281,7 @@ define(['./../generated_proto/sketch', // protoSketch SrlShape.createFromProtobuf = function(shape) { var interpretations = shape.interpretations; var subObjects = shape.subComponents; - var newShape = new SRL_Shape(); + var newShape = new SrlShape(); for (var i = 0; i < interpretations.length; i++) { var protoInter = interpretations[i]; newShape.addInterpretation(protoInter.label, protoInter.confidence, protoInter.complexity); @@ -289,11 +289,11 @@ define(['./../generated_proto/sketch', // protoSketch for (i = 0; i < subObjects.length; i++) { var protoObject = subObjects[i]; - newShape.addSubObject(objectConversionUtils.convertToUpgradedSketchObject(protoObject)); + newShape.add(objectConversionUtils.convertToUpgradedSketchObject(protoObject)); } newShape.setId(shape.getId()); newShape.setName(shape.getName()); - + newShape.setTime(shape.getTime()); return newShape; }; diff --git a/src/main/js/sketchLibrary/SrlStroke.js b/src/main/js/sketchLibrary/SrlStroke.js index e537a03..3ca61bb 100644 --- a/src/main/js/sketchLibrary/SrlStroke.js +++ b/src/main/js/sketchLibrary/SrlStroke.js @@ -244,9 +244,9 @@ define(['./../generated_proto/sketch', // protoSketch var array = []; var points = this.getPoints(); for (var i = 0; i < points.length; i++) { - array.push(points[i]); + array.push(points[i].sendToProtobuf()); } - proto.setPoints(array); // THIS FUNCTION SUCKS! + proto.setPoints(array); // this should verify the points are created correctly. return proto; }; @@ -262,7 +262,7 @@ define(['./../generated_proto/sketch', // protoSketch for (var i in pointList) { if (pointList.hasOwnProperty(i)) { var point = pointList[i]; - var currentPoint = SrlStroke.createFromProtobuf(point); + var currentPoint = SrlPoint.createFromProtobuf(point); srlStroke.addPoint(currentPoint); } } @@ -271,6 +271,7 @@ define(['./../generated_proto/sketch', // protoSketch } srlStroke.finish(); srlStroke.setId(stroke.getId()); + srlStroke.setTime(stroke.getTime()); return srlStroke; }; diff --git a/src/test/js/sketchLibrary/SrlShapeTest.js b/src/test/js/sketchLibrary/SrlShapeTest.js index 80b2b01..f999266 100644 --- a/src/test/js/sketchLibrary/SrlShapeTest.js +++ b/src/test/js/sketchLibrary/SrlShapeTest.js @@ -37,10 +37,15 @@ describe('Shape Tests', function () { for (var i = 0; i < 10; i++) { var stroke = new SrlStroke(); stroke.id = 'stroke' + i; - stroke.addPoint(new SrlPoint(x, y)); + var point = new SrlPoint(x, y); + point.setTime(50); + point.setId('point' + i); + stroke.addPoint(point); strokeList.push(stroke); + stroke.setTime(60); var shape = new SrlShape(); shape.id = 'shape' + i; + shape.setTime(70); shapeList.push(shape); } }); @@ -73,5 +78,16 @@ describe('Shape Tests', function () { expect(shapeList[0].getRecursiveStrokes()).to.have.members([strokeList[0]]); expect(shapeList[0].getRecursiveSubObjects()).to.have.members([strokeList[0]]); }); + + it('should be able to encode and decode from binary protobuf correctly', function () { + for (var i = 0; i < 9; i++) { + shapeList[i].add(strokeList[i]); + shapeList[i].add(shapeList[i + 1]); + } + var buffer = shapeList[0].toArrayBuffer(); + var shape = SrlShape.decode(buffer); + // have deep members errors out. But contents were identical anyways + expect(JSON.stringify([shape.getRecursiveSubObjects()])).to.be.deep.equal(JSON.stringify([shapeList[0].getRecursiveSubObjects()])); + }); }); });