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

org.scalatest.Documenter.scala Maven / Gradle / Ivy

The newest version!
/*
 * Copyright 2001-2013 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

import org.scalactic.source

 /*
 * 

* A Documenter is essentially * used to wrap a Reporter and provide easy ways to send markup text * to that Reporter via a MarkupProvided event. * Documenter contains an apply method that takes a string. * The Documenter will forward the passed string to the Reporter as the text * parameter of an MarkupProvided event. *

* *

* Here's an example of using an Documenter in a Suite * subclass: *

* *
 * import org.scalatest._
 * 
 * class MySuite extends Suite {
 *   def testAddition(markup: Documenter) {
 *     assert(1 + 1 === 2)
 *     markup("Addition *seems* to work")
 *   }
 * }
 * 
* *

* As of 2.0, the only built-in reporter that presents markup text is the HTML reporter. * If you run this Suite and specify the HTML reporter, you will see the message * included in the HTML report: *

* *
 * scala> (new MySuite).execute()
 * - testAddition(Informer)
 *   + Addition seems to work
 * 
* *

* Traits FunSuite, Spec, FlatSpec, WordSpec, FeatureSpec, and * their sister traits in org.scalatest.fixture package declare an implicit markup method that returns * an Documenter. * Here's an example of a Spec that uses markup: *

* *
 * import org.scalatest.refspec.RefSpec
 * import scala.collection.mutable.Stack
 *
 * class StackSpec extends RefSpec {
 *
 *   markup("""
 *
 *     Stack Specification
 *     ===================
 *
 *     A  `Stack` is a data structure that allows you to store and retrieve objects in
 *     a last-in-first-out (LIFO) fashion. `Stack`s (both this class and its immutable
 *     cousin) are not commonly used in Scala, because a `List` gives you
 *     the same basic functionality. Pushing an object onto a `Stack` maps to consing
 *     a new element onto the front of a `List`. Peaking at the top of the `Stack` maps to
 *     to a `head`. Popping an object off of a `Stack` maps to a `head` followed by a `tail`. 
 *     Nevertheless, using a `Stack` instead of a `List` can clarify your intent
 *     to readers of your code.
 *
 *   """)
 *
 *   describe("A Stack") {
 *
 *     it("should pop values in last-in-first-out order") {
 *       val stack = new Stack[Int]
 *       stack.push(1)
 *       stack.push(2)
 *       assert(stack.pop() === 2)
 *       assert(stack.pop() === 1)
 *     }
 *
 *     it("should throw NoSuchElementException if an empty stack is popped") {
 *       val emptyStack = new Stack[String]
 *       assertThrows[NoSuchElementException] {
 *         emptyStack.pop()
 *       }
 *     }
 *   }
 * }
 * 
* *

* Were you to run this FeatureSpec in the interpreter, you would see the following output: *

* *
 * 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 to which markup text tests can be reported. * *

* Note: Documenter will be described in more detail in a future 2.0 milestone release. As of this release * you can't see its effects yet. *

* * @author Bill Venners */ trait Documenter { /** * Provide documentation to the Reporter. * * @param text an string of markup text that will be forwarded to the wrapped Reporter * via a MarkupProvided event. * * @throws NullArgumentException if message reference is null */ def apply(text: String)(implicit pos: source.Position): Unit }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy