/* * Copyright 2013-2016 Sergey Ignatov, Alexander Zolotov, Florin Patan * * 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. */ package com.goide.editor; import com.goide.GoCodeInsightFixtureTestCase; public class GoLiveTemplateTest extends GoCodeInsightFixtureTestCase { public void testErrOnStatementBeginning() { myFixture.configureByText("a.go", "package main; func main() { <caret> }"); myFixture.type("err\t"); myFixture.checkResult("package main; func main() {\n" + "\tif err != nil {\n" + "\t\t<caret>\n" + "\t} }"); } public void testErrAfterIf() { myFixture.configureByText("a.go", "package main; func main() { if <caret> }"); myFixture.type("err\t"); myFixture.checkResult("package main; func main() { if err\t<caret> }"); } public void testJsonInTag() { myFixture.configureByText("a.go", "package main; type foo struct { MyFieldDeclaration int <caret> }"); myFixture.type("json\t"); myFixture.checkResult("package main; type foo struct { MyFieldDeclaration int `json:\"my_field_declaration\"` }"); } public void testJsonInTagAfterComplexType() { myFixture.configureByText("a.go", "package main; type foo struct { a []int <caret> }"); myFixture.type("json\t"); myFixture.checkResult("package main; type foo struct { a []int `json:\"a\"` }"); } public void testXmlInTagOfAnonymousField() { myFixture.configureByText("a.go", "package main; type foo struct { int <caret> }"); myFixture.type("xml\t"); myFixture.checkResult("package main; type foo struct { int `xml:\"<caret>\"` }"); } public void testXmlInTagLiteral() { myFixture.configureByText("a.go", "package main; type foo struct { a int `<caret>` }"); myFixture.type("xml\t"); myFixture.checkResult("package main; type foo struct { a int `xml:\"a\"` }"); } public void testJsonNotInTag() { myFixture.configureByText("a.go", "package main; func main() { <caret> }"); myFixture.type("json\t"); myFixture.checkResult("package main; func main() { json\t<caret> }"); } public void testJsonNotInTag_2() { myFixture.configureByText("a.go", "package main; type foo struct { int \n<caret> }"); myFixture.type("json\t"); myFixture.checkResult("package main; type foo struct { int \njson\t<caret> }"); } public void testForInSignature() { myFixture.configureByText("a.go", "package main; func <caret>"); myFixture.type("for\t"); myFixture.checkResult("package main; func for\t<caret>"); } public void testForInBlock() { myFixture.configureByText("a.go", "package main; func main() { <caret> }"); myFixture.type("for\t"); myFixture.checkResult("package main; func main() {\n" + "\tfor ; ; {\n" + "\t\t\n" + "\t} }"); } public void testVarDeclarationInBlock() { myFixture.configureByText("a.go", "package main; func main() { <caret> }"); myFixture.type(":\t"); myFixture.checkResult("package main; func main() {\n\tname := }"); } public void testVarDeclarationInLabel() { myFixture.configureByText("a.go", "package main; func main() { name <caret> }"); myFixture.type(":\t"); myFixture.checkResult("package main; func main() { name :\t<caret> }"); } public void testMainAfterPackageClause() { myFixture.configureByText("a.go", "package mai<caret>"); myFixture.type("n\t"); myFixture.checkResult("package main\t<caret>"); } }