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

org.scalatest.matchers.dsl.ExistWord.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.matchers.dsl

import org.scalatest.enablers.Existence
import org.scalatest.matchers.Matcher
import org.scalatest.matchers.dsl.MatcherFactory1
import org.scalatest.matchers.dsl.MatcherFactory2
import org.scalatest.Resources
import org.scalatest.matchers.MatchResult

/**
 * This class is part of the ScalaTest matchers DSL. Please see the documentation for Matchers for an overview of
 * the matchers DSL.
 *
 * @author Bill Venners
 * @author Chee Seng
 */
final class ExistWord {
  
  private[scalatest] val matcherFactory: MatcherFactory1[Any, Existence] = 
    new MatcherFactory1[Any, Existence] {
      def matcher[T <: Any : Existence]: Matcher[T] = 
        new Matcher[T] {
          def apply(left: T): MatchResult = {
            val existence = implicitly[Existence[T]]
            MatchResult(
              existence.exists(left), 
              Resources.rawDoesNotExist,
              Resources.rawExists,
              Vector(left)
            )
          }
          override def toString: String = "exist"
        }
      override def toString: String = "exist"
    }

  import scala.language.higherKinds
  
  /**
   * This method enables the following syntax:
   *
   * 
   * file should (exist and equal (existFile))
   *                    ^
   * 
*/ infix def and[TYPECLASS1[_]](anotherMatcherFactory: MatcherFactory1[Any, TYPECLASS1]): MatcherFactory2[Any, Existence, TYPECLASS1] = matcherFactory.and(anotherMatcherFactory) /** * This method enables the following syntax: * *
   * file should (exist and be (existFile))
   *                    ^
   * 
*/ infix def and(anotherMatcher: Matcher[Any]): MatcherFactory1[Any, Existence] = matcherFactory.and(anotherMatcher) /** * This method enables the following syntax: * *
   * file should (exist or equal (existFile))
   *                    ^
   * 
*/ infix def or[TYPECLASS1[_]](anotherMatcherFactory: MatcherFactory1[Any, TYPECLASS1]): MatcherFactory2[Any, Existence, TYPECLASS1] = matcherFactory.or(anotherMatcherFactory) /** * This method enables the following syntax: * *
   * file should (exist or be (existFile))
   *                    ^
   * 
*/ infix def or(anotherMatcher: Matcher[Any]): MatcherFactory1[Any, Existence] = matcherFactory.or(anotherMatcher) }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy