marking2/danube_test3.scala
changeset 259 43995ea34fe7
child 284 9a04eb6a2291
equal deleted inserted replaced
258:ebe71908b13e 259:43995ea34fe7
       
     1 
       
     2 // first test 
       
     3 
       
     4 val ls1_urban = List(("1", "a"), ("2", "a"), ("1", "c"), ("2", "a"), ("1", "c"))
       
     5 
       
     6 val m_urban = groupById(ls1_urban, Map())
       
     7 
       
     8 assert(m_urban.getOrElse("1", Nil).count(_ == "c") == 2)
       
     9 assert(m_urban.getOrElse("1", Nil).count(_ == "a") == 1)
       
    10 assert(m_urban.getOrElse("2", Nil) == List("a", "a"))
       
    11 
       
    12 // second test
       
    13 
       
    14 def urban_gb(ratings: List[(String, String)]) = 
       
    15   ratings.groupBy(_._1).mapValues(_.map(_._2).toSet) 
       
    16 
       
    17 def urban_gb2(ratings: List[(String, String)]) = 
       
    18   ratings.groupBy(_._1).mapValues(_.map(_._2)) 
       
    19 
       
    20 def urban_ck(ratings: List[(String, String)]) =
       
    21   urban_gb(ratings) == groupById(ratings, Map()).mapValues(_.toSet)
       
    22 
       
    23 
       
    24 val ls2_urban = List(("1", "a"), ("1", "b"), ("2", "x"), ("3", "a"), ("2", "y"), ("3", "c"))
       
    25 
       
    26 assert(urban_ck(ls2_urban))
       
    27 
       
    28 // thrird test
       
    29 
       
    30 val ls3_urban = (1 to 1000).map(_.toString).toList
       
    31 val ls4_urban = ls3_urban zip ls3_urban.tail
       
    32 val ls5_urban = ls4_urban ::: ls4_urban.reverse
       
    33 
       
    34 assert(urban_ck(ls5_urban))
       
    35 
       
    36 
       
    37 /*
       
    38 import io.Source
       
    39 import scala.util._
       
    40 
       
    41 def urban_get_csv_file(name: String) : List[String] = {
       
    42   val csv = Source.fromFile(name)
       
    43   csv.mkString.split("\n").toList.drop(1)
       
    44 }
       
    45 
       
    46 def urban_process_ratings(lines: List[String]) : List[(String, String)] = {
       
    47   for (cols <- lines.map(_.split(",").toList); 
       
    48        if (cols(2).toFloat >= 4)) yield (cols(0), cols(1))  
       
    49 }
       
    50 
       
    51 val urban_ratings = urban_process_ratings(urban_get_csv_file("ratings.csv").take(1000))
       
    52 
       
    53 assert(urban_ck(urban_ratings))
       
    54 */