Skip to content

Commit

Permalink
📃 docs: Add tutorial 03 built-in annotations
Browse files Browse the repository at this point in the history
  • Loading branch information
caoccao committed Jun 29, 2023
1 parent 13206d3 commit 678edb4
Show file tree
Hide file tree
Showing 3 changed files with 79 additions and 10 deletions.
20 changes: 10 additions & 10 deletions scripts/node/test/test_transform.js
Original file line number Diff line number Diff line change
Expand Up @@ -146,27 +146,27 @@ function testContractIgnoreProperty() {
}

function testContractChangeMethod() {
const context = { method: {} };
const context = { options: {} };
const result = jaspiler.transformSync(
`package a.b.c;
public class A {
@JaspilerContract.Change(instruction = "method = { type: 'clear' }")
@JaspilerContract.Change(instruction = "options = { type: 'clear' }")
public void testVoid() { 1 + 1; }
@JaspilerContract.Change(instruction = "method = { type: 'clear' }")
@JaspilerContract.Change(instruction = "options = { type: 'clear' }")
public boolean testBoolean() { return true; }
@JaspilerContract.Change(instruction = "method = { type: 'clear' }")
@JaspilerContract.Change(instruction = "options = { type: 'clear' }")
public char testChar() { return 'a'; }
@JaspilerContract.Change(instruction = "method = { type: 'clear' }")
@JaspilerContract.Change(instruction = "options = { type: 'clear' }")
public double testDouble() { return 1.23D; }
@JaspilerContract.Change(instruction = "method = { type: 'clear' }")
@JaspilerContract.Change(instruction = "options = { type: 'clear' }")
public float testFloat() { return 1.23F; }
@JaspilerContract.Change(instruction = "method = { type: 'clear' }")
@JaspilerContract.Change(instruction = "options = { type: 'clear' }")
public int testInt() { return 1; }
@JaspilerContract.Change(instruction = "method = { type: 'clear' }")
@JaspilerContract.Change(instruction = "options = { type: 'clear' }")
public long testLong() { return 1L; }
@JaspilerContract.Change(instruction = "method = { type: 'clear' }")
@JaspilerContract.Change(instruction = "options = { type: 'clear' }")
public Object testObject() { return new Object(); }
@JaspilerContract.Change(instruction = "method = { type: 'clear' }")
@JaspilerContract.Change(instruction = "options = { type: 'clear' }")
public String testString() { return "123"; }
}
`,
Expand Down
60 changes: 60 additions & 0 deletions scripts/node/tutorials/03_builtin_annotations.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
/*
* Copyright (c) 2023. caoccao.com Sam Cao
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

// Tutorial 02: Play with Types

/// <reference types="../jaspiler/index.d.ts"/>

const { PluginContractIgnore, PluginContractChangeMethod } = require('./jaspiler/jaspiler');

const result = jaspiler.transformSync(
`package com.test;
public class A {
@JaspilerContract.Ignore
private int a; // This property is ignored.
@JaspilerContract.Ignore(condition = "x == 1")
private int b; // This property is ignored.
@JaspilerContract.Ignore(condition = "x == 2")
private int c; // This property is not ignored.
@JaspilerContract.Ignore
public void d() {
// This method is ignored.
}
@JaspilerContract.Change(instruction = "options = { type: 'clear' }")
public void e(String str) {
System.out.println(str); // This method is cleared.
}
@JaspilerContract.Change(instruction = "options = { type: 'clear' }")
public int f(int x, int y) {
return x + y; // This method is cleared.
}
}
@JaspilerContract.Ignore
interface B {} // This interface is ignored.
`,
{
context: { x: 1, options: {} },
plugins: [PluginContractIgnore, PluginContractChangeMethod],
sourceType: 'string',
});
console.info(result.code);
9 changes: 9 additions & 0 deletions src/test/java/com/caoccao/jaspiler/TestJaspilerMain.java
Original file line number Diff line number Diff line change
Expand Up @@ -48,4 +48,13 @@ public void testTutorials02PlayWithTypes() throws Exception {
.toAbsolutePath().toFile());
assertEquals(0, jaspilerMain.call());
}

@Test
public void testTutorials03BuiltinAnnotations() throws Exception {
var jaspilerMain = new JaspilerMain();
jaspilerMain.setFile(
SystemUtils.INITIAL_WORKING_DIRECTORY.resolve("scripts/node/tutorials/03_builtin_annotations.js")
.toAbsolutePath().toFile());
assertEquals(0, jaspilerMain.call());
}
}

0 comments on commit 678edb4

Please sign in to comment.