org.scalatest.matchers

# BePropertyMatcher

#### trait BePropertyMatcher [-T] extends (T) ⇒ BePropertyMatchResult

Trait extended by matcher objects, which may appear after the word `be`, that can match against a `Boolean` property. The match will succeed if and only if the `Boolean` property equals `true`. The object containing the property, which must be of the type specified by the `BePropertyMatcher`'s type parameter `T`, is passed to the `BePropertyMatcher`'s `apply` method. The result is a `BePropertyMatchResult`. A `BePropertyMatcher` is, therefore, a function from the specified type, `T`, to a `BePropertyMatchResult`.

Although `BePropertyMatcher` and `Matcher` represent similar concepts, they have no inheritance relationship because `Matcher` is intended for use right after `should` or `must` whereas `BePropertyMatcher` is intended for use right after `be`.

A `BePropertyMatcher` essentially allows you to write statically typed `Boolean` property assertions similar to the dynamic ones that use symbols:

    tempFile should be a ('file) // dynamic: uses reflection
    tempFile should be a (file)  // type safe: only works on Files; no reflection used

One good way to organize custom matchers is to place them inside one or more traits that you can then mix into the suites or specs that need them. Here's an example that includes two `BePropertyMatcher`s:

    trait CustomMatchers {

      class FileBePropertyMatcher extends BePropertyMatcher[java.io.File] {
        def apply(left: java.io.File) = BePropertyMatchResult(left.isFile, "file")
      }

      class DirectoryBePropertyMatcher extends BePropertyMatcher[java.io.File] {
        def apply(left: java.io.File) = BePropertyMatchResult(left.isDirectory, "directory")
      }

      val file = new FileBePropertyMatcher
      val directory = new DirectoryBePropertyMatcher
    }

Because the type parameter of these two `BePropertyMatcher`s is `java.io.File`, they can only be used with instances of that type. (The compiler will enforce this.) All they do is create a `BePropertyMatchResult` whose `matches` field is `true` if and only if the `Boolean` property is `true`. The second field, `propertyName`, is simply the string name of the property. The `file` and `directory` `val`s create variables that can be used in matcher expressions that test whether a `java.io.File` is a file or a directory. Here's an example:

    class ExampleSpec extends Spec with ShouldMatchers with CustomMatchers {

      describe("A temp file") {

        it("should be a file, not a directory") {

          val tempFile = java.io.File.createTempFile("delete", "me")

          try {
            tempFile should be a (file)
            tempFile should not be a (directory)
          }
          finally {
            tempFile.delete()
          }
        }
      }
    }

These matches should succeed, but if for example the first match, `tempFile should be a (file)`, were to fail, you would get an error message like:

    /tmp/delme1234me was not a file

For more information on `BePropertyMatchResult` and the meaning of its fields, please see the documentation for `BePropertyMatchResult`. To understand why `BePropertyMatcher` is contravariant in its type parameter, see the section entitled "Matcher's variance" in the documentation for `Matcher`.

Self Type
  BePropertyMatcher[T]

Linear Supertypes
(T) ⇒ BePropertyMatchResult, AnyRef, Any
Ordering

1. Alphabetic
2. By inheritance

Inherited

1. Hide All
2. Show all

1. BePropertyMatcher
2. Function1
3. AnyRef
4. Any

Visibility

1. Public
2. All

### Abstract Value Members

1. #### def apply (objectWithProperty: T): BePropertyMatchResult

   Check to see if a `Boolean` property on the specified object, `objectWithProperty`, matches its expected value, and report the result in the returned `BePropertyMatchResult`.

   Check to see if a `Boolean` property on the specified object, `objectWithProperty`, matches its expected value, and report the result in the returned `BePropertyMatchResult`. The `objectWithProperty` is usually the value to the left of a `should` or `must` invocation. For example, `tempFile` would be passed as the `objectWithProperty` in:

       tempFile should be a (file)

   objectWithProperty

     the object with the `Boolean` property against which to match

   returns

     the `BePropertyMatchResult` that represents the result of the match

   Attributes
     abstract
   Definition Classes
     BePropertyMatcher → Function1

### Concrete Value Members

1. #### def != (arg0: AnyRef): Boolean

   Attributes
     final
   Definition Classes
     AnyRef

2. #### def != (arg0: Any): Boolean

   Attributes
     final
   Definition Classes
     Any

3. #### def ## (): Int

   Attributes
     final
   Definition Classes
     AnyRef → Any

4. #### def == (arg0: AnyRef): Boolean

   Attributes
     final
   Definition Classes
     AnyRef

5. #### def == (arg0: Any): Boolean

   Attributes
     final
   Definition Classes
     Any

6. #### def andThen [A] (g: (BePropertyMatchResult) ⇒ A): (T) ⇒ A

   Definition Classes
     Function1

7. #### def asInstanceOf [T0] : T0

   Attributes
     final
   Definition Classes
     Any

8. #### def clone (): AnyRef

   Attributes
     protected[lang]
   Definition Classes
     AnyRef
   Annotations
     @throws()

9. #### def compose [U] (g: (U) ⇒ T): BePropertyMatcher[U]

   Compose this `BePropertyMatcher` with the passed function, returning a new `BePropertyMatcher`.

   Compose this `BePropertyMatcher` with the passed function, returning a new `BePropertyMatcher`.

   This method overrides `compose` on `Function1` to return a more specific function type of `BePropertyMatcher`.

   Definition Classes
     BePropertyMatcher → Function1

10. #### def eq (arg0: AnyRef): Boolean

    Attributes
      final
    Definition Classes
      AnyRef

11. #### def equals (arg0: Any): Boolean

    Definition Classes
      AnyRef → Any

12. #### def finalize (): Unit

    Attributes
      protected[lang]
    Definition Classes
      AnyRef
    Annotations
      @throws()

13. #### def getClass (): java.lang.Class[_]

    Attributes
      final
    Definition Classes
      AnyRef

14. #### def hashCode (): Int

    Definition Classes
      AnyRef → Any

15. #### def isInstanceOf [T0] : Boolean

    Attributes
      final
    Definition Classes
      Any

16. #### def ne (arg0: AnyRef): Boolean

    Attributes
      final
    Definition Classes
      AnyRef

17. #### def notify (): Unit

    Attributes
      final
    Definition Classes
      AnyRef

18. #### def notifyAll (): Unit

    Attributes
      final
    Definition Classes
      AnyRef

19. #### def synchronized [T0] (arg0: ⇒ T0): T0

    Attributes
      final
    Definition Classes
      AnyRef

20. #### def toString (): String

    Definition Classes
      Function1 → AnyRef → Any

21. #### def wait (): Unit

    Attributes
      final
    Definition Classes
      AnyRef
    Annotations
      @throws()

22. #### def wait (arg0: Long, arg1: Int): Unit

    Attributes
      final
    Definition Classes
      AnyRef
    Annotations
      @throws()

23. #### def wait (arg0: Long): Unit

    Attributes
      final
    Definition Classes
      AnyRef
    Annotations
      @throws()

### Inherited from (T) ⇒ BePropertyMatchResult

### Inherited from AnyRef

### Inherited from Any