github.com/influx6/npkg@v0.8.8/njs/njs_test.go (about) 1 package njs_test 2 3 import ( 4 "strings" 5 "testing" 6 7 "github.com/influx6/npkg/njs/producers" 8 9 "github.com/influx6/npkg/njs" 10 "github.com/stretchr/testify/require" 11 ) 12 13 func TestClassBlock(t *testing.T) { 14 var funcDecl = njs.ClassBlock(njs.Class{ 15 Name: "Mix", 16 Extends: "", 17 Body: njs.Join( 18 njs.Function(njs.Func{ 19 Name: "Mixer", 20 Args: "name", 21 Body: `console.log("Mixing: ", name)`, 22 Async: true, 23 Static: false, 24 }), 25 njs.Function(njs.Func{ 26 Name: "Mix", 27 Args: "name", 28 Body: `console.log("Mixing: ", name)`, 29 Async: false, 30 Static: true, 31 }), 32 ), 33 }) 34 require.Equal(t, funcDecl, "\n\n\n\n\n\n\n\n\n\n\n\n\n\nclass Mix {\n \n \n "+ 35 " \n async function Mixer(name) {\n console.log(\"Mixing: \", name)\n };\n "+ 36 " \n \n \n static Mix(name) {\n console.log(\"Mixing: \", name)\n };\n};") 37 } 38 39 func TestAsyncFunctionCall(t *testing.T) { 40 var funcDecl = njs.FunctionCall(njs.Func{ 41 Name: "Mix", 42 Args: "name", 43 Body: "", 44 Async: true, 45 Static: false, 46 }) 47 require.Equal(t, funcDecl, `await Mix(name);`) 48 } 49 50 func TestFunctionCall(t *testing.T) { 51 var funcDecl = njs.FunctionCall(njs.Func{ 52 Name: "Mix", 53 Args: "name", 54 Body: "", 55 Async: false, 56 Static: false, 57 }) 58 require.Equal(t, funcDecl, `Mix(name);`) 59 } 60 61 func TestStaticFunction(t *testing.T) { 62 var funcDecl = njs.Function(njs.Func{ 63 Name: "Mix", 64 Args: "name", 65 Body: `console.log("Mixing: ", name)`, 66 Async: false, 67 Static: true, 68 }) 69 require.Equal(t, funcDecl, "\n\n\nstatic Mix(name) {\n console.log(\"Mixing: \", name)\n};") 70 } 71 72 func TestAsyncStaticFunction(t *testing.T) { 73 var funcDecl = njs.Function(njs.Func{ 74 Name: "Mix", 75 Args: "name", 76 Body: `console.log("Mixing: ", name)`, 77 Async: true, 78 Static: true, 79 }) 80 81 require.Equal(t, funcDecl, "\n\n\nstatic async Mix(name) {\n console.log(\"Mixing: \", name)\n};") 82 } 83 84 func TestAsyncFunction(t *testing.T) { 85 var funcDecl = njs.Function(njs.Func{ 86 Name: "Mix", 87 Args: "name", 88 Body: `console.log("Mixing: ", name)`, 89 Async: true, 90 Static: false, 91 }) 92 93 require.Equal(t, funcDecl, "\n\n\nasync function Mix(name) {\n console.log(\"Mixing: \", name)\n};") 94 } 95 96 func TestFunction(t *testing.T) { 97 var funcDecl = njs.Function(njs.Func{ 98 Name: "Mix", 99 Args: "name", 100 Body: `console.log("Mixing: ", name)`, 101 Async: false, 102 Static: false, 103 }) 104 105 require.Equal(t, funcDecl, "\n\n\nfunction Mix(name) {\n console.log(\"Mixing: \", name)\n};") 106 } 107 108 func TestVariable(t *testing.T) { 109 var variableDecl = njs.Variable(njs.Var{Name: "name", Value: `"Alex"`}) 110 require.Equal(t, variableDecl, `var name = "Alex";`) 111 } 112 113 func TestComposeProducers(t *testing.T) { 114 var composed = njs.ComposeProducers( 115 true, 116 producers.ComposeVariable(njs.Var{Name: "name", Value: `"Alex"`}), 117 producers.ComposeVariable(njs.Var{Name: "age", Value: `20`}), 118 producers.ComposeVariable(njs.Var{Name: "range", Value: `1`}), 119 ) 120 121 var builder strings.Builder 122 require.NoError(t, composed(&builder)) 123 require.Equal(t, builder.String(), "var name = \"Alex\";\nvar age = 20;\nvar range = 1;") 124 }