private def tableFieldValueOf()

in ratatool-scalacheck/src/main/scala/com/spotify/ratatool/scalacheck/TableRowGenerator.scala [124:157]


  private def tableFieldValueOf(fieldSchema: TableFieldSchema): Gen[TableFieldValue] = {
    val n = fieldSchema.getName
    def genV(): Gen[TableFieldValue] = fieldSchema.getType match {
      case "INTEGER" => Arbitrary.arbInt.arbitrary.map(TableFieldValue(n, _))
      case "FLOAT"   => Arbitrary.arbFloat.arbitrary.map(TableFieldValue(n, _))
      case "BOOLEAN" => Arbitrary.arbBool.arbitrary.map(TableFieldValue(n, _))
      case "STRING"  => Arbitrary.arbString.arbitrary.map(TableFieldValue(n, _))
      case "TIMESTAMP" =>
        instantGen.map(i => TableFieldValue(n, timeStampFormatter.print(i) + " UTC"))
      case "DATE"     => instantGen.map(i => TableFieldValue(n, dateFormatter.print(i)))
      case "TIME"     => instantGen.map(i => TableFieldValue(n, timeFormatter.print(i)))
      case "DATETIME" => instantGen.map(i => TableFieldValue(n, dateTimeFormatter.print(i)))
      case "BYTES" =>
        Gen
          .listOf(Arbitrary.arbByte.arbitrary)
          .map(i => ByteBuffer.wrap(i.toArray))
          .map(v => TableFieldValue(n, BaseEncoding.base64().encode(v.array())))
      case "RECORD" =>
        linkedMapOfList(fieldSchema.getFields.asScala).map(TableFieldValue(n, _))

      case t => throw new RuntimeException(s"Unknown type: $t")
    }

    getFieldModeWithDefault(fieldSchema.getMode) match {
      case "REQUIRED" => genV()
      case "NULLABLE" =>
        Arbitrary.arbBool.arbitrary.flatMap { e =>
          if (e) genV() else Gen.const(TableFieldValue(n, null))
        }
      case "REPEATED" => Gen.nonEmptyListOf(genV()).map(l => TableFieldValue(n, l))

      case m => throw new RuntimeException(s"Unknown mode: $m")
    }
  }