//
//  File derived from: GTMSenTestCase.h
//
//  Copyright 2007-2008 Google 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.
//

// Portions of this file fall under the following license, marked with
// SENTE_BEGIN - SENTE_END
//
// Copyright (c) 1997-2005, Sen:te (Sente SA).  All rights reserved.
//
// Use of this source code is governed by the following license:
// 
// Redistribution and use in source and binary forms, with or without modification, 
// are permitted provided that the following conditions are met:
// 
// (1) Redistributions of source code must retain the above copyright notice, 
// this list of conditions and the following disclaimer.
// 
// (2) Redistributions in binary form must reproduce the above copyright notice, 
// this list of conditions and the following disclaimer in the documentation 
// and/or other materials provided with the distribution.
// 
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' 
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
// IN NO EVENT SHALL Sente SA OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
// OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 
// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// 
// Note: this license is equivalent to the FreeBSD license.
// 
// This notice may not be removed from this file.

#import "TRObject.h"
#import "TRString.h"

@interface PXTestException : TRObject {
@private
    /** The test failure reason. */
    TRString *_reason;
    
    /** The test failure file name. */
    TRString *_fileName;

    /** The line number at which the test failure was thrown. */
    int _lineNumber;
}

+ (PXTestException *)failureInFile:(TRString *)filename 
                        atLine:(int)lineNumber 
               withDescription:(TRString *)formatString, ...;
+ (PXTestException *)failureInCondition:(TRString *)condition 
                             isTrue:(BOOL)isTrue 
                             inFile:(TRString *)filename 
                             atLine:(int)lineNumber 
                    withDescription:(TRString *)formatString, ...;
+ (PXTestException *)failureInEqualityBetweenObject:(id)left
                                      andObject:(id)right
                                         inFile:(TRString *)filename
                                         atLine:(int)lineNumber
                                withDescription:(TRString *)formatString, ...;
+ (PXTestException *)failureInEqualityBetweenValue:(id)left 
                                      andValue:(id)right 
                                  withAccuracy:(id)accuracy 
                                        inFile:(TRString *)filename 
                                        atLine:(int) ineNumber
                               withDescription:(TRString *)formatString, ...;
+ (PXTestException *)failureInRaise:(TRString *)expression 
                         inFile:(TRString *)filename 
                         atLine:(int)lineNumber
                withDescription:(TRString *)formatString, ...;
+ (PXTestException *)failureInRaise:(TRString *)expression 
                      exception:(PXTestException *)exception 
                         inFile:(TRString *)filename 
                         atLine:(int)lineNumber 
                withDescription:(TRString *)formatString, ...;
                
- (id) initWithReason: (TRString *) reason fileName: (TRString *) fileName lineNumber: (int) lineNumber;            
            
- (TRString *) reason;

- (TRString *) fileName;

- (int) lineNumber;
           
@end