All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.fulrich.testcharged.generators.locations.StreetGenerators.scala Maven / Gradle / Ivy

package com.github.fulrich.testcharged.generators.locations

import com.github.fulrich.testcharged.generators._
import com.github.fulrich.testcharged.generators.numerics.IntGenerators
import org.scalacheck.Gen

import scala.io.Source


object StreetGenerators {
  private lazy val streetFile = "/generators/locations/streets.txt"
  private lazy val suffixesFile = "/generators/locations/street-suffixes.txt"

  lazy val Names: Seq[String] = Source.fromInputStream(getClass.getResourceAsStream(streetFile)).getLines.toVector
  lazy val Suffixes: Seq[String] = Source.fromInputStream(getClass.getResourceAsStream(suffixesFile)).getLines.toVector

  val MinimumStreetNumber = 1
  val MaximumStreetNumber = 9999


  val number: Gen[Int] = IntGenerators(MinimumStreetNumber, MaximumStreetNumber)
  val name: Gen[String] = Gen.oneOf(Names)
  val suffix: Gen[String] = Gen.oneOf(Suffixes)

  val default: Gen[String] = for {
    generatedStreetNumber <- number
    generatedStreetName <- name
    generatedStreetSuffix <- suffix.gen.option
    streetSuffix = generatedStreetSuffix.map(" " + _).getOrElse("")
  } yield s"$generatedStreetNumber $generatedStreetName$streetSuffix"
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy