1*082815dcSEvan Baconimport { appendContentsInsideDeclarationBlock, findNewInstanceCodeBlock } from '../codeMod'; 2*082815dcSEvan Bacon 3*082815dcSEvan Bacondescribe(findNewInstanceCodeBlock, () => { 4*082815dcSEvan Bacon it('should support classic new instance - java', () => { 5*082815dcSEvan Bacon const contents = 'final Foo instance = new Foo();'; 6*082815dcSEvan Bacon expect(findNewInstanceCodeBlock(contents, 'Foo', 'java')).toEqual({ 7*082815dcSEvan Bacon start: 21, 8*082815dcSEvan Bacon end: 29, 9*082815dcSEvan Bacon code: 'new Foo()', 10*082815dcSEvan Bacon }); 11*082815dcSEvan Bacon }); 12*082815dcSEvan Bacon 13*082815dcSEvan Bacon it('should support classic new instance - kotlin', () => { 14*082815dcSEvan Bacon const contents = 'val instance = Foo()'; 15*082815dcSEvan Bacon expect(findNewInstanceCodeBlock(contents, 'Foo', 'kt')).toEqual({ 16*082815dcSEvan Bacon start: 15, 17*082815dcSEvan Bacon end: 19, 18*082815dcSEvan Bacon code: 'Foo()', 19*082815dcSEvan Bacon }); 20*082815dcSEvan Bacon }); 21*082815dcSEvan Bacon 22*082815dcSEvan Bacon it('should support anonymous class new instance - java', () => { 23*082815dcSEvan Bacon const contents = [ 24*082815dcSEvan Bacon 'final Runnable runnable = new Runnable() {', 25*082815dcSEvan Bacon ' @Override', 26*082815dcSEvan Bacon ' public void run() {', 27*082815dcSEvan Bacon ' Log.i(TAG, "runnable");', 28*082815dcSEvan Bacon ' }', 29*082815dcSEvan Bacon '};', 30*082815dcSEvan Bacon ].join('\n'); 31*082815dcSEvan Bacon expect(findNewInstanceCodeBlock(contents, 'Runnable', 'java')).toEqual({ 32*082815dcSEvan Bacon start: 26, 33*082815dcSEvan Bacon end: 109, 34*082815dcSEvan Bacon code: [ 35*082815dcSEvan Bacon 'new Runnable() {', 36*082815dcSEvan Bacon ' @Override', 37*082815dcSEvan Bacon ' public void run() {', 38*082815dcSEvan Bacon ' Log.i(TAG, "runnable");', 39*082815dcSEvan Bacon ' }', 40*082815dcSEvan Bacon '}', 41*082815dcSEvan Bacon ].join('\n'), 42*082815dcSEvan Bacon }); 43*082815dcSEvan Bacon }); 44*082815dcSEvan Bacon 45*082815dcSEvan Bacon it('should support anonymous class new instance - kotlin', () => { 46*082815dcSEvan Bacon const contents = [ 47*082815dcSEvan Bacon 'val runnable = object : Runnable() {', 48*082815dcSEvan Bacon ' override fun run() {', 49*082815dcSEvan Bacon ' Log.i(TAG, "runnable")', 50*082815dcSEvan Bacon ' }', 51*082815dcSEvan Bacon '}', 52*082815dcSEvan Bacon ].join('\n'); 53*082815dcSEvan Bacon expect(findNewInstanceCodeBlock(contents, 'Runnable', 'kt')).toEqual({ 54*082815dcSEvan Bacon start: 15, 55*082815dcSEvan Bacon end: 91, 56*082815dcSEvan Bacon code: [ 57*082815dcSEvan Bacon 'object : Runnable() {', 58*082815dcSEvan Bacon ' override fun run() {', 59*082815dcSEvan Bacon ' Log.i(TAG, "runnable")', 60*082815dcSEvan Bacon ' }', 61*082815dcSEvan Bacon '}', 62*082815dcSEvan Bacon ].join('\n'), 63*082815dcSEvan Bacon }); 64*082815dcSEvan Bacon }); 65*082815dcSEvan Bacon 66*082815dcSEvan Bacon it('should return null if not found', () => { 67*082815dcSEvan Bacon const contents = 'final Foo instance = new Foo();'; 68*082815dcSEvan Bacon expect(findNewInstanceCodeBlock(contents, 'Bar', 'java')).toBe(null); 69*082815dcSEvan Bacon }); 70*082815dcSEvan Bacon}); 71*082815dcSEvan Bacon 72*082815dcSEvan Bacondescribe(appendContentsInsideDeclarationBlock, () => { 73*082815dcSEvan Bacon it('should support class declaration', () => { 74*082815dcSEvan Bacon const contents = ` 75*082815dcSEvan Baconpublic class App { 76*082815dcSEvan Bacon public static void main(String[] args) { 77*082815dcSEvan Bacon System.out.println("Hello App!"); 78*082815dcSEvan Bacon } 79*082815dcSEvan Bacon}`; 80*082815dcSEvan Bacon 81*082815dcSEvan Bacon const expectContents = ` 82*082815dcSEvan Baconpublic class App { 83*082815dcSEvan Bacon public static void main(String[] args) { 84*082815dcSEvan Bacon System.out.println("Hello App!"); 85*082815dcSEvan Bacon } 86*082815dcSEvan Bacon 87*082815dcSEvan Bacon public void foo() { 88*082815dcSEvan Bacon System.out.println("Hello foo!"); 89*082815dcSEvan Bacon } 90*082815dcSEvan Bacon}`; 91*082815dcSEvan Bacon 92*082815dcSEvan Bacon expect( 93*082815dcSEvan Bacon appendContentsInsideDeclarationBlock( 94*082815dcSEvan Bacon contents, 95*082815dcSEvan Bacon 'public class App', 96*082815dcSEvan Bacon ` 97*082815dcSEvan Bacon public void foo() { 98*082815dcSEvan Bacon System.out.println("Hello foo!"); 99*082815dcSEvan Bacon }\n` 100*082815dcSEvan Bacon ) 101*082815dcSEvan Bacon ).toEqual(expectContents); 102*082815dcSEvan Bacon }); 103*082815dcSEvan Bacon 104*082815dcSEvan Bacon it('should support method declaration', () => { 105*082815dcSEvan Bacon const contents = ` 106*082815dcSEvan Baconpublic class App { 107*082815dcSEvan Bacon public static void main(String[] args) { 108*082815dcSEvan Bacon System.out.println("Hello App!"); 109*082815dcSEvan Bacon } 110*082815dcSEvan Bacon}`; 111*082815dcSEvan Bacon 112*082815dcSEvan Bacon const expectContents = ` 113*082815dcSEvan Baconpublic class App { 114*082815dcSEvan Bacon public static void main(String[] args) { 115*082815dcSEvan Bacon System.out.println("Hello App!"); 116*082815dcSEvan Bacon System.out.println("Hello from generated code."); 117*082815dcSEvan Bacon } 118*082815dcSEvan Bacon}`; 119*082815dcSEvan Bacon 120*082815dcSEvan Bacon expect( 121*082815dcSEvan Bacon appendContentsInsideDeclarationBlock( 122*082815dcSEvan Bacon contents, 123*082815dcSEvan Bacon 'public static void main', 124*082815dcSEvan Bacon ' System.out.println("Hello from generated code.");\n ' 125*082815dcSEvan Bacon ) 126*082815dcSEvan Bacon ).toEqual(expectContents); 127*082815dcSEvan Bacon }); 128*082815dcSEvan Bacon}); 129