Types of string in groovy (#6287)

This commit is contained in:
Kacper 2019-02-12 06:06:09 +01:00 committed by Josh Cummings
parent e2f3d605f0
commit c957ceaeba
8 changed files with 268 additions and 0 deletions

View File

@ -0,0 +1,19 @@
package groovy.com.baeldung.stringtypes
import org.junit.Assert
import org.junit.Test
class CharacterInGroovy {
@Test
void 'character'() {
char a = 'A' as char
char b = 'B' as char
char c = (char) 'C'
Assert.assertTrue(a instanceof Character)
Assert.assertTrue(b instanceof Character)
Assert.assertTrue(c instanceof Character)
}
}

View File

@ -0,0 +1,24 @@
package groovy.com.baeldung.stringtypes
import org.junit.Test
class DollarSlashyString {
@Test
void 'dollar slashy string'() {
def name = "John"
def dollarSlashy = $/
Hello $name!,
I can show you $ sign or escaped dollar sign: $$
Both slashes works: \ or /, but we can still escape it: $/
We have to escape opening and closing delimiter:
- $$$/
- $/$$
/$
print(dollarSlashy)
}
}

View File

@ -0,0 +1,67 @@
package groovy.com.baeldung.stringtypes
import org.junit.Assert
import org.junit.Test
class DoubleQuotedString {
@Test
void 'escape double quoted string'() {
def example = "Hello \"world\"!"
println(example)
}
@Test
void 'String ang GString'() {
def string = "example"
def stringWithExpression = "example${2}"
Assert.assertTrue(string instanceof String)
Assert.assertTrue(stringWithExpression instanceof GString)
Assert.assertTrue(stringWithExpression.toString() instanceof String)
}
@Test
void 'placeholder with variable'() {
def name = "John"
def helloName = "Hello $name!".toString()
Assert.assertEquals("Hello John!", helloName)
}
@Test
void 'placeholder with expression'() {
def result = "result is ${2 * 2}".toString()
Assert.assertEquals("result is 4", result)
}
@Test
void 'placeholder with dotted access'() {
def person = [name: 'John']
def myNameIs = "I'm $person.name, and you?".toString()
Assert.assertEquals("I'm John, and you?", myNameIs)
}
@Test
void 'placeholder with method call'() {
def name = 'John'
def result = "Uppercase name: ${name.toUpperCase()}".toString()
Assert.assertEquals("Uppercase name: JOHN", result)
}
@Test
void 'GString and String hashcode'() {
def string = "2+2 is 4"
def gstring = "2+2 is ${4}"
Assert.assertTrue(string.hashCode() != gstring.hashCode())
}
}

View File

@ -0,0 +1,15 @@
package groovy.com.baeldung.stringtypes
import org.junit.Assert
import org.junit.Test
class SingleQuotedString {
@Test
void 'single quoted string'() {
def example = 'Hello world'
Assert.assertEquals('Hello world!', 'Hello' + ' world!')
}
}

View File

@ -0,0 +1,31 @@
package groovy.com.baeldung.stringtypes
import org.junit.Assert
import org.junit.Test
class SlashyString {
@Test
void 'slashy string'() {
def pattern = /.*foobar.*\/hello.*/
Assert.assertTrue("I'm matching foobar /hello regexp pattern".matches(pattern))
}
void 'wont compile'() {
// if ('' == //) {
// println("I can't compile")
// }
}
@Test
void 'interpolate and multiline'() {
def name = 'John'
def example = /
Hello $name
second line
/
}
}

View File

@ -0,0 +1,26 @@
package groovy.com.baeldung.stringtypes
import org.junit.Assert
import org.junit.Test
class Strings {
@Test
void 'string interpolation '() {
def name = "Kacper"
def result = "Hello ${name}!"
Assert.assertEquals("Hello Kacper!", result.toString())
}
@Test
void 'string concatenation'() {
def first = "first"
def second = "second"
def concatenation = first + second
Assert.assertEquals("firstsecond", concatenation)
}
}

View File

@ -0,0 +1,19 @@
package groovy.com.baeldung.stringtypes
import org.junit.Test
class TripleDoubleQuotedString {
@Test
void 'triple-quoted strings with interpolation'() {
def name = "John"
def multiLine = """
I'm $name.
"This is quotation"
"""
println(multiLine)
}
}

View File

@ -0,0 +1,67 @@
package groovy.com.baeldung.stringtypes
import org.junit.Assert
import org.junit.Test
class TripleSingleQuotedString {
def 'formatted json'() {
def jsonContent = '''
{
"name": "John",
"age": 20,
"birthDate": null
}
'''
}
def 'triple single quoted'() {
def triple = '''im triple single quoted string'''
}
@Test
void 'triple single quoted with multiline string'() {
def triple = '''
firstline
secondline
'''
Assert.assertTrue(triple.startsWith("\n"))
}
@Test
void 'triple single quoted with multiline string with stripIndent() and removing newline characters'() {
def triple = '''\
firstline
secondline'''.stripIndent()
Assert.assertEquals("firstline\nsecondline", triple)
}
@Test
void 'triple single quoted with multiline string with last line with only whitespaces'() {
def triple = '''\
firstline
secondline\
'''.stripIndent()
println(triple)
}
@Test
void 'triple single quoted with multiline string with stripMargin(Character) and removing newline characters'() {
def triple = '''\
|firstline
|secondline'''.stripMargin()
println(triple)
}
@Test
void 'striple single quoted with special characters'() {
def specialCharacters = '''hello \'John\'. This is backslash - \\. \nSecond line starts here'''
println(specialCharacters)
}
}