alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

Scala example source code file (unittest_iterator.scala)

This example Scala source code file (unittest_iterator.scala) is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Java - Scala tags/keywords

array, int, int, iterator, list, list, nosuchelementexception, seq, string, string, test, test, unit

The Scala unittest_iterator.scala source code

// Some iterator grouped/sliding unit tests
object Test {  
  def it = (1 to 10).iterator
  def assertThat[T](expectedLength: Int, expectedLast: Seq[T])(it: Iterator[Seq[T]]) {
    val xs = it.toList
    def fail(msg: String) = "assertion failed on %s: %s".format(xs, msg)
    assert(xs.size == expectedLength, fail("expected length " + expectedLength))
    assert(xs.last == expectedLast, fail("expected last " + expectedLast))
  }
  
  def main(args: Array[String]): Unit = {
    val itSum = it.toStream.sum
    for (i <- it) {
      // sum of the groups == sum of the original
      val thisSum = ((it grouped i) map (_.sum)).toStream.sum
      assert(thisSum == itSum, thisSum + " != " + itSum) 
    }
    
    // grouped
    assertThat(4, List(10)) { it grouped 3 }
    assertThat(3, List(7, 8, 9)) { it grouped 3 withPartial false }
    assertThat(4, List(10, -1, -1)) { it grouped 3 withPadding -1 }

    // testing by-name padding
    val padIt = it
    assertThat(4, List(10, 1, 2)) { it grouped 3 withPadding padIt.next }

    // sliding
    assertThat(8, List(8, 9, 10)) { it sliding 3 }
    assertThat(3, (3 to 10).toList) { it sliding 8 }
    assertThat(2, List(9, 10)) { it.sliding(8, 8) }
    assertThat(1, (1 to 8).toList) { it.sliding(8, 8) withPartial false }
    assertThat(2, List(9, 10, -1, -1, -1)) { it.sliding(5, 8) withPadding -1 }
    assertThat(1, (1 to 5).toList) { it.sliding(5, 8) withPartial false }
    
    // larger step than window
    assertThat(5, List(9)) { it.sliding(1, 2) }
    assertThat(3, List(9, 10)) { it.sliding(2, 4) }
    
    // make sure it throws past the end
    val thrown = try {
      val it = List(1,2,3).sliding(2)
      it.next
      it.next
      it.next
      false
    }
    catch {
      case _: NoSuchElementException => true
    }
    assert(thrown)
  }
}

Other Scala examples (source code examples)

Here is a short list of links related to this Scala unittest_iterator.scala source code file:

... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.