Invariants.jl

Invariants.jl is a source file in module Invariants

			
			
			
			module
			
			
			
			 
			
	
		
			Invariants
			
			
			

			
			

			
			
			using
			
			
			 
			
			InlineTest
			
			

			
			
			
			using
			
			
			 
			
			TextWrap
			
			:
			
			
			 
			
			wrap
			
			

			
			
			import
			
			
			 
			
			AbstractTrees
			
			

			
			
			import
			
			
			 
			
	
		
			InvariantsCore
			
			

			
			
			
			import
			
			
			 
			
	
		
			InvariantsCore
			
			:
			
			
			 
			
	
		
			AbstractInvariant
			
			,
			
			
			 
			
	
		
			InvariantList
			
			,
			
			
			 
			
	
		
			AnyInvariant
			
			,
			
			
			 
			
	
		
			AllInvariant
			
			,
			
			
			
                       
			
	
		
			AsMarkdown
			
			,
			
			
			 
			
	
		
			errormessage
			
			,
			
			
			 
			
	
		
			satisfies
			
			,
			
			
			 
			
	
		
			invariant
			
			,
			
			
			 
			
	
		
			check
			
			,
			
			
			 
			
	
		
			check_throw
			
			,
			
			
			
                       
			
	
		
			title
			
			,
			
			
			 
			
	
		
			description
			
			,
			
			
			 
			
	
		
			showdescription
			
			,
			
			
			 
			
	
		
			showtitle
			
			

			
			

			
			
			include
			
			(
			
			"
			
			wrapio.jl
			
			"
			
			)
			
			

			
			
			include
			
			(
			
			"
			
			tree.jl
			
			"
			
			)
			
			

			
			
			include
			
			(
			
			"
			
			show.jl
			
			"
			
			)
			
			

			
			

			
			
			include
			
			(
			
			"
			
			invariants/hasmethod.jl
			
			"
			
			)
			
			

			
			
			include
			
			(
			
			"
			
			invariants/hastype.jl
			
			"
			
			)
			
			

			
			

			
			
			function
			
			 
			
			
	
		
			exampleinvariant
			
			(
			
			
			symbol
			
			 
			
			=
			
			 
			
			
			:
			
			n
			
			)
			
			
			
    
			
			
			return
			
			 
			
			
			
	
		
			Invariant
			
			(
			
			
			"
			
			`
			
			$
			
			symbol
			
			` is positive
			
			"
			
			,
			
			
                     
			
			
	
		
			description
			
			 
			
			=
			
			 
			
			
			"
			
			The number `
			
			$
			
			symbol
			
			` should be larger than `0`.
			
			"
			
			)
			
			 
			
			do
			
			
			
			 
			
			x
			
			
			
        
			
			
			if
			
			 
			
			
			!
			
			(
			
			
			x
			
			 
			
			isa
			
			 
			
			Number
			
			)
			
			
			
            
			
			
			return
			
			 
			
			
			"
			
			`
			
			$
			
			symbol
			
			` has type 
			
			$
			
			(
			
			
			typeof
			
			(
			
			x
			
			)
			
			)
			
			, but it should be a `Number` type.
			
			"
			
			
        
			
			else
			
			
			
            
			
			
			
			x
			
			 
			
			>
			
			 
			
			0
			
			 
			
			&&
			
			 
			
			
			return
			
			 
			
			nothing
			
			
            
			
			
			return
			
			 
			
			
			"
			
			`
			
			$
			
			symbol
			
			` is not a positive number, got value `
			
			$
			
			x
			
			`. Please pass a number larger than 0.
			
			"
			
			
        
			
			end
			
			
    
			
			end
			
			

			
			end
			
			

			
			

			
			
			export
			
			 
			
	
		
			invariant
			
			,
			
			 
			
	
		
			check
			
			,
			
			 
			
	
		
			check_throw
			
			

			
			

			
			end