diff options
Diffstat (limited to 'tests/examplefiles/example.kt')
-rw-r--r-- | tests/examplefiles/example.kt | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/tests/examplefiles/example.kt b/tests/examplefiles/example.kt new file mode 100644 index 00000000..59291333 --- /dev/null +++ b/tests/examplefiles/example.kt @@ -0,0 +1,47 @@ +package addressbook + +class Contact( + val name : String, + val emails : List<EmailAddress>, + val addresses : List<PostalAddress>, + val phonenums : List<PhoneNumber> +) + +class EmailAddress( + val user : String, + val host : String +) + +class PostalAddress( + val streetAddress : String, + val city : String, + val zip : String, + val state : USState?, + val country : Country +) { + assert {(state == null) xor (country == Countries["US"]) } +} + +class PhoneNumber( + val country : Country, + val areaCode : Int, + val number : Long +) + +object Countries { + fun get(id : CountryID) : Country = countryTable[id] + + private var table : Map<String, Country>? = null + private val countryTable : Map<String, Country> + get() { + if (table == null) { + table = HashMap() + for (line in TextFile("countries.txt").lines(stripWhiteSpace = true)) { + table[line] = Country(line) + } + } + return table + } +} + +class Country(val name : String)
\ No newline at end of file |