github.com/unirita/cuto@v0.9.8-0.20160830082821-aa6652f877b7/message/variable_test.go (about) 1 package message 2 3 import ( 4 "os" 5 "testing" 6 ) 7 8 func TestNewVariable_変数オブジェクトを生成できる(t *testing.T) { 9 v := NewVariable(`$METEST$`) 10 if v == nil { 11 t.Fatal("オブジェクト生成に失敗した。") 12 } 13 if v.String() != `$METEST$` { 14 t.Errorf("文字列表現[%s]が想定と違っている", v.String()) 15 } 16 if v.Place != 'M' { 17 t.Errorf("Placeの値[%c]が想定と違っている。", v.Place) 18 } 19 if v.Kind != 'E' { 20 t.Errorf("Kindの値[%c]が想定と違っている。", v.Kind) 21 } 22 if v.Name != `TEST` { 23 t.Errorf("Nameの値[%s]が想定と違っている。", v.Name) 24 } 25 if v.Tag != `` { 26 t.Errorf("Tagの値[%s]が想定と違っている。", v.Tag) 27 } 28 } 29 30 func TestNewVariable_変数名が明らかに短い場合nilを返す(t *testing.T) { 31 v := NewVariable(`$ME$`) 32 if v != nil { 33 t.Error("nilを返さなかった。") 34 } 35 } 36 37 func TestNewVariable_場所識別子が定義外の場合nilを返す(t *testing.T) { 38 v := NewVariable(`$AETEST$`) 39 if v != nil { 40 t.Error("nilを返さなかった。") 41 } 42 } 43 44 func TestNewVariable_種別識別子が定義外の場合nilを返す(t *testing.T) { 45 v := NewVariable(`$MATEST$`) 46 if v != nil { 47 t.Error("nilを返さなかった。") 48 } 49 } 50 51 func TestNewVariable_変数オブジェクトを生成できる_タグ付き(t *testing.T) { 52 v := NewVariable(`$MJTEST:ID$`) 53 if v == nil { 54 t.Fatal("オブジェクト生成に失敗した。") 55 } 56 if v.String() != `$MJTEST:ID$` { 57 t.Errorf("文字列表現[%s]が想定と違っている", v.String()) 58 } 59 if v.Place != 'M' { 60 t.Errorf("Placeの値[%c]が想定と違っている。", v.Place) 61 } 62 if v.Kind != 'J' { 63 t.Errorf("Kindの値[%c]が想定と違っている。", v.Kind) 64 } 65 if v.Name != `TEST` { 66 t.Errorf("Nameの値[%s]が想定と違っている。", v.Name) 67 } 68 if v.Tag != `ID` { 69 t.Errorf("Tagの値[%s]が想定と違っている。", v.Tag) 70 } 71 } 72 73 func TestExpand_システム変数の値を取得できる(t *testing.T) { 74 AddSysValue(`JOBNET`, `ID`, `123456`) 75 AddSysValue(`ROOT`, ``, `C:\cute`) 76 77 v := NewVariable("$MSJOBNET:ID$") 78 val, err := v.Expand() 79 if err != nil { 80 t.Fatalf("想定外のエラーが発生[%s]", err) 81 } 82 if val != `123456` { 83 t.Errorf("取得したJOBNET:IDの値[%s]が想定と違っている。", val) 84 } 85 86 v = NewVariable("$SSROOT$") 87 val, err = v.Expand() 88 if err != nil { 89 t.Fatalf("想定外のエラーが発生[%s]", err) 90 } 91 if val != `C:\cute` { 92 t.Errorf("取得したSSROOTの値[%s]が想定と違っている。", val) 93 } 94 } 95 96 func TestExpand_未定義のシステム変数を参照したらエラー(t *testing.T) { 97 v := NewVariable("$MSUNDEF$") 98 _, err := v.Expand() 99 if err == nil { 100 t.Error("エラーが発生しなかった。") 101 } 102 } 103 104 func TestExpand_環境変数の値を取得できる(t *testing.T) { 105 v := NewVariable("$METEST$") 106 os.Setenv("TEST", "testenv") 107 108 val, err := v.Expand() 109 if err != nil { 110 t.Fatalf("想定外のエラーが発生[%s]", err) 111 } 112 if val != "testenv" { 113 t.Errorf("取得した値[%s]が想定と違っている。", val) 114 } 115 } 116 117 func TestExpand_ジョブネットワーク変数の値を取得できる(t *testing.T) { 118 res := new(Response) 119 res.JID = "JOB1" 120 res.RC = 1 121 res.St = "2015-01-01 12:34:56.789" 122 res.Et = "2015-01-01 13:00:00.000" 123 res.Var = "testout" 124 AddJobValue("test", res) 125 126 v := NewVariable("$MJtest:ID$") 127 val, err := v.Expand() 128 if err != nil { 129 t.Fatalf("想定外のエラーが発生[%s]", err) 130 } 131 if val != "JOB1" { 132 t.Errorf("取得したRCの値[%s]が想定と違っている。", val) 133 } 134 135 v = NewVariable("$MJtest:RC$") 136 val, err = v.Expand() 137 if err != nil { 138 t.Fatalf("想定外のエラーが発生[%s]", err) 139 } 140 if val != "1" { 141 t.Errorf("取得したRCの値[%s]が想定と違っている。", val) 142 } 143 144 v = NewVariable("$MJtest:SD$") 145 val, err = v.Expand() 146 if err != nil { 147 t.Fatalf("想定外のエラーが発生[%s]", err) 148 } 149 if val != "$ST20150101123456.789$" { 150 t.Errorf("取得したSDの値[%s]が想定と違っている。", val) 151 } 152 153 v = NewVariable("$MJtest:ED$") 154 val, err = v.Expand() 155 if err != nil { 156 t.Fatalf("想定外のエラーが発生[%s]", err) 157 } 158 if val != "$ST20150101130000.000$" { 159 t.Errorf("取得したEDの値[%s]が想定と違っている。", val) 160 } 161 162 v = NewVariable("$MJtest:OUT$") 163 val, err = v.Expand() 164 if err != nil { 165 t.Fatalf("想定外のエラーが発生[%s]", err) 166 } 167 if val != "testout" { 168 t.Errorf("取得したOUTの値[%s]が想定と違っている。", val) 169 } 170 } 171 172 func TestExpand_未定義のジョブネットワーク変数を参照したらエラー(t *testing.T) { 173 res := new(Response) 174 res.RC = 1 175 res.St = "2015-01-01 12:34:56.789" 176 res.Et = "2015-01-01 13:00:00.000" 177 res.Var = "testout" 178 AddJobValue("test", res) 179 180 v := NewVariable("$MJtest2:RC$") 181 _, err := v.Expand() 182 if err == nil { 183 t.Error("エラーが発生しなかった。") 184 } 185 } 186 187 func TestExpand_servantではジョブネットワーク変数を参照したらエラー(t *testing.T) { 188 res := new(Response) 189 res.RC = 1 190 res.St = "2015-01-01 12:34:56.789" 191 res.Et = "2015-01-01 13:00:00.000" 192 res.Var = "testout" 193 AddJobValue("test", res) 194 195 v := NewVariable("$SJtest:RC$") 196 _, err := v.Expand() 197 if err == nil { 198 t.Error("エラーが発生しなかった。") 199 } 200 } 201 202 func TestExpandStringVars_文字列中の変数を展開できる(t *testing.T) { 203 AddSysValue("JOBNET", "ID", "123456") 204 os.Setenv("TEST", "testenv") 205 res := new(Response) 206 res.RC = 1 207 res.St = "2015-01-01 12:34:56.789" 208 res.Et = "2015-01-01 13:00:00.000" 209 res.Var = "testout" 210 AddJobValue("test", res) 211 212 before := `NETWORK[$MSJOBNET:ID$] END. JOBRC[$MJtest:RC$] TESTENV[$METEST$]` 213 after, err := ExpandStringVars(before, plcMaster, kndSys, kndEnv, kndJob) 214 if err != nil { 215 t.Fatalf("想定外のエラーが発生した[%s]", err) 216 } 217 218 expect := `NETWORK[123456] END. JOBRC[1] TESTENV[testenv]` 219 if after != expect { 220 t.Errorf("変数展開後の文字列が想定と一致しない。") 221 t.Logf("想定値:%s", expect) 222 t.Logf("実績値:%s", after) 223 } 224 } 225 226 func TestExpandStringVars_利用可能種別に指定した変数種別だけを展開する(t *testing.T) { 227 AddSysValue("JOBNET", "ID", "123456") 228 os.Setenv("TEST", "testenv") 229 res := new(Response) 230 res.RC = 1 231 AddJobValue("test", res) 232 233 before := `NETWORK[$MSJOBNET:ID$] END. JOBRC[$MJtest:RC$] TESTENV[$METEST$]` 234 after, err := ExpandStringVars(before, plcMaster, kndEnv) 235 if err != nil { 236 t.Fatalf("想定外のエラーが発生した[%s]", err) 237 } 238 239 expect := `NETWORK[$MSJOBNET:ID$] END. JOBRC[$MJtest:RC$] TESTENV[testenv]` 240 if after != expect { 241 t.Errorf("変数展開後の文字列が想定と一致しない。") 242 t.Logf("想定値:%s", expect) 243 t.Logf("実績値:%s", after) 244 } 245 } 246 247 func TestExpandStringVars_場所識別子が異なる変数を無視する(t *testing.T) { 248 os.Setenv("TEST", "testenv") 249 250 before := `MASTERENV[$METEST$] SERVANTENV[$SETEST$]` 251 after, err := ExpandStringVars(before, plcMaster, kndSys, kndEnv, kndJob) 252 if err != nil { 253 t.Fatalf("想定外のエラーが発生した[%s]", err) 254 } 255 256 expect := `MASTERENV[testenv] SERVANTENV[$SETEST$]` 257 if after != expect { 258 t.Errorf("変数展開後の文字列が想定と一致しない。") 259 t.Logf("想定値:%s", expect) 260 t.Logf("実績値:%s", after) 261 } 262 } 263 264 func TestExpandTime(t *testing.T) { 265 v := NewVariable("$ST20150730123456.789$") 266 result, err := v.expandTime() 267 if err != nil { 268 t.Fatalf("想定外のエラーが発生した[%s]", err) 269 } 270 if result != "2015-07-30 21:34:56.789" { 271 t.Errorf("変数展開後の文字列が想定と一致しない。") 272 t.Logf("想定値:%s", "2015-07-30 21:34:56.789") 273 t.Logf("実績値:%s", result) 274 } 275 }