diff --git a/test/codegen/fromcto/java/javavisitor.js b/test/codegen/fromcto/java/javavisitor.js index a7bca99d..f284f450 100644 --- a/test/codegen/fromcto/java/javavisitor.js +++ b/test/codegen/fromcto/java/javavisitor.js @@ -21,6 +21,8 @@ const sinon = require('sinon'); const JavaVisitor = require('../../../../lib/codegen/fromcto/java/javavisitor.js'); const ClassDeclaration = require('@accordproject/concerto-core').ClassDeclaration; +const MapDeclaration = require('@accordproject/concerto-core').MapDeclaration; +const ModelUtil = require('@accordproject/concerto-core').ModelUtil; const EnumDeclaration = require('@accordproject/concerto-core').EnumDeclaration; const EnumValueDeclaration = require('@accordproject/concerto-core').EnumValueDeclaration; const Field = require('@accordproject/concerto-core').Field; @@ -29,6 +31,8 @@ const ModelManager = require('@accordproject/concerto-core').ModelManager; const RelationshipDeclaration = require('@accordproject/concerto-core').RelationshipDeclaration; const FileWriter = require('@accordproject/concerto-util').FileWriter; +let sandbox = sinon.createSandbox(); + describe('JavaVisitor', function () { let javaVisit; let mockFileWriter; @@ -413,6 +417,47 @@ describe('JavaVisitor', function () { param.fileWriter.writeLine.withArgs(1, 'private JavaType[] Bob;').calledOnce.should.be.ok; }); + it('should write a line with a HashMap', () => { + let param = { + fileWriter: mockFileWriter, + mode: 'field' + }; + + sandbox.restore(); + sandbox.stub(ModelUtil, 'isMap').callsFake(() => { + return true; + }); + + const mockField = sinon.createStubInstance(Field); + const getAllDeclarations = sinon.stub(); + + mockField.dummy = 'Dummy Value'; + mockField.getModelFile.returns({ getAllDeclarations: getAllDeclarations }); + + const mockMapDeclaration = sinon.createStubInstance(MapDeclaration); + const findStub = sinon.stub(); + const getKeyType = sinon.stub(); + const getValueType = sinon.stub(); + + mockField.getName.returns('Bob'); + mockField.getType.returns('SpecialType'); + + getAllDeclarations.returns({ find: findStub }); + findStub.returns(mockMapDeclaration); + getKeyType.returns('String'); + getValueType.returns('String'); + mockField.getName.returns('Map1'); + mockMapDeclaration.getName.returns('Map1'); + mockMapDeclaration.isMapDeclaration.returns(true); + mockMapDeclaration.getKey.returns({ getType: getKeyType }); + mockMapDeclaration.getValue.returns({ getType: getValueType }); + + javaVisit.visitField(mockField,param); + + param.fileWriter.writeLine.withArgs(1, 'private Map<String, String> Map1 = new HashMap<>();').calledOnce.should.be.ok; + sandbox.reset(); + }); + it('should write a line defining a field', () => { let mockField = sinon.createStubInstance(Field); mockField.isField.returns(true);