Just a commit

This commit is contained in:
2016-08-15 14:08:39 -05:00
parent 0ef5df860d
commit ec4ec16ac2
50 changed files with 1972 additions and 7 deletions

1
kotlin/current Symbolic link
View File

@@ -0,0 +1 @@
hello-world

View File

@@ -0,0 +1,48 @@
# Hello World
Write a function that greets the user by name, or by saying "Hello, World!" if no name is given.
["Hello, World!"](http://en.wikipedia.org/wiki/%22Hello,_world!%22_program) is the traditional first program for beginning programming in a new language.
**Note:** You can skip this exercise by running:
exercism skip $LANGUAGE hello-world
## Specification
Write a `Hello World!` function that can greet someone given their name.
The function should return the appropriate greeting.
For an input of "Alice", the response should be "Hello, Alice!".
If a name is not given, the response should be "Hello, World!"
## Test-Driven Development
As programmers mature, they eventually want to test their code.
Here at Exercism we simulate [Test-Driven Development](http://en.wikipedia.org/wiki/Test-driven_development) (TDD), where you write your tests before writing any functionality. The simulation comes in the form of a pre-written test suite, which will signal that you have solved the problem.
It will also provide you with a safety net to explore other solutions without breaking the functionality.
### A typical TDD workflow on Exercism:
1. Run the test file and pick one test that's failing.
2. Write some code to fix the test you picked.
3. Re-run the tests to confirm the test is now passing.
4. Repeat from step 1.
5. Submit your solution (`exercism submit /path/to/file`)
## Instructions
Submissions are encouraged to be general, within reason. Having said that, it's also important not to over-engineer a solution.
It's important to remember that the goal is to make code as expressive and readable as we can. However, solutions to the hello-world exercise will not be reviewed by a person, but by rikki- the robot, who will offer an encouraging word.
## Source
This is an exercise to introduce users to using Exercism [http://en.wikipedia.org/wiki/%22Hello,_world!%22_program](http://en.wikipedia.org/wiki/%22Hello,_world!%22_program)
## Submitting Incomplete Problems
It's possible to submit an incomplete solution so you can see how others have completed the exercise.

View File

@@ -0,0 +1,22 @@
buildscript {
ext.kotlin_version = '1.0.2'
repositories {
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
apply plugin: 'kotlin'
repositories {
mavenCentral()
}
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
testCompile 'junit:junit:4.12'
testCompile "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version"
}

View File

@@ -0,0 +1,31 @@
/**
* Simple HelloWorld singleton class as defined by the `Kotlin object keyword`.
* See: https://kotlinlang.org/docs/reference/object-declarations.html#object-declarations
*
* As an alternative one could create a class such as:
* ```
* class HelloWorld(name: String? = "Default Value") {
* fun hello(): String {
*
* }
* }
* ```
* Resulting in a call such as: `HelloWorld("Bob").hello()`
* See: https://kotlinlang.org/docs/reference/classes.html#constructors
*
* In Kotlin we make objects defined as nullable via the trailing `?`, if you try
* to assign a null value to any value that isn't nullable a compilation error is thrown.
* Kotlin makes sure you are accessing nullable values safely and provides null safe calls
* and the use of the elvis operator. See: https://kotlinlang.org/docs/reference/null-safety.html
*
* You may provide default values on methods, so if an argument is omitted the default is used.
* See: https://kotlinlang.org/docs/reference/functions.html#default-arguments
*
* Kotlin provides String interpolation to make String formatting simple.
* See: https://kotlinlang.org/docs/reference/idioms.html#string-interpolation
*/
object HelloWorld {
fun hello(name: String? = "Default Argument"): String {
}
}

View File

@@ -0,0 +1,32 @@
import kotlin.test.assertEquals
import org.junit.Test
class HelloWorldTest {
@Test
fun helloNoName() {
assertEquals("Hello, World!", HelloWorld.hello())
}
@Test
fun helloBlankName() {
assertEquals("Hello, World!", HelloWorld.hello(""))
assertEquals("Hello, World!", HelloWorld.hello(" "))
}
@Test
fun helloNullName() {
//This isn't advised in Kotlin but demonstrates the null safety in Kotlin
assertEquals("Hello, World!", HelloWorld.hello(null))
}
@Test
fun helloSampleName() {
assertEquals("Hello, Alice!", HelloWorld.hello("Alice"))
}
@Test
fun helloAnotherSampleName() {
assertEquals("Hello, Bob!", HelloWorld.hello("Bob"))
}
}