org.scalatest.Informer.scala Maven / Gradle / Ivy
Show all versions of scalatest_2.8.1 Show documentation
/*
* Copyright 2001-2008 Artima, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.scalatest
/**
* Trait to which custom information about a running suite of tests can be reported.
*
*
* An Informer is essentially
* used to wrap a Reporter and provide easy ways to send custom information
* to that Reporter via an InfoProvided event.
* Informer contains an apply method that takes a string and
* an optional payload object of type Any.
* The Informer will forward the passed message string to the
* Reporter as the message parameter, and the optional
* payload object as the payload parameter, of an InfoProvided event.
*
*
*
* Here's an example of using an Informer:
*
*
*
* import org.scalatest._
*
* class ExampleSuite extends Suite {
* def testAddition(info: Informer) {
* assert(1 + 1 === 2)
* info("Addition seems to work")
* }
* }
*
*
* If you run this Suite from the interpreter, you will see the message
* included in the printed report:
*
*
* scala> (new ExampleSuite).execute()
* ExampleSuite:
* - testAddition(Reporter)
* + Addition seems to work
*
*
*
* Traits FunSuite, FunSpec, FlatSpec, WordSpec, FeatureSpec, and
* their sister traits in org.scalatest.fixture package declare an implicit info method that returns
* an Informer. This implicit info is used, for example, to enable the syntax offered by the
* GivenWhenThen trait, which contains methods that take an implicit Informer.
* Here's an example of a FeatureSpec that mixes in GivenWhenThen:
*
*
*
* import org.scalatest.FeatureSpec
* import org.scalatest.GivenWhenThen
*
* class ArithmeticSpec extends FeatureSpec with GivenWhenThen {
*
* feature("Integer arithmetic") {
*
* scenario("addition") {
*
* given("two integers")
* val x = 2
* val y = 3
*
* when("they are added")
* val sum = x + y
*
* then("the result is the sum of the two numbers")
* assert(sum === 5)
* }
*
* scenario("subtraction") {
*
* given("two integers")
* val x = 7
* val y = 2
*
* when("one is subtracted from the other")
* val diff = x - y
*
* then("the result is the difference of the two numbers")
* assert(diff === 5)
* }
* }
* }
*
*
*
* Were you to run this FeatureSpec in the interpreter, you would see the following messages
* included in the printed report:
*
*
*
* scala> (new ArithmeticFeatureSpec).run()
* Feature: Integer arithmetic
* Scenario: addition
* Given two integers
* When they are added
* Then the result is the sum of the two numbers
* Scenario: subtraction
* Given two integers
* When one is subtracted from the other
* Then the result is the difference of the two numbers
*
*
* @author Bill Venners
*/
trait Informer {
// TODO: Make sure all the informer implementations check for null
/**
* Provide information and optionally, a payload, to the Reporter via an
* InfoProvided event.
*
* @param message a string that will be forwarded to the wrapped Reporter
* via an InfoProvided event.
* @param payload an optional object which will be forwarded to the wrapped Reporter
* as a payload via an InfoProvided event.
*
* @throws NullPointerException if message or payload reference is null
*/
def apply(message: String, payload: Option[Any] = None): Unit
/**
* Provide information and additional payload to the Reporter as the .
*
* @param message an object whose toString result will be forwarded to the wrapped Reporter
* via an InfoProvided event.
* @param payload an object which will be forwarded to the wrapped Reporter
* via an InfoProvided event.
*
* @throws NullPointerException if message reference is null
*/
//def apply(message: String, payload: Any): Unit
}