12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- module Chervil
- RSpec.describe AST::Conditional do
- it 'returns the true branch given #t' do
- expect(AST::Conditional.new(
- AST::Boolean.new(true),
- AST::Number.new(1.0),
- AST::Number.new(0.0),
- ).evaluate(Env.new)).to eq(
- 1.0
- )
- end
-
- it 'returns the false branch given #f' do
- expect(AST::Conditional.new(
- AST::Boolean.new(false),
- AST::Number.new(1.0),
- AST::Number.new(0.0),
- ).evaluate(Env.new)).to eq(
- 0.0
- )
- end
-
- it 'evaluates complex predicates' do
- expect(AST::Conditional.new(
- AST::List.new(
- [
- AST::Identifier.new(">"),
- AST::Number.new(2.0),
- AST::Number.new(1.0),
- ]
- ),
- AST::Number.new(2.0),
- AST::Number.new(1.0),
- ).evaluate(Env.new)).to eq(
- 2.0
- )
- end
-
- it 'evaluates complex branches' do
- expect(AST::Conditional.new(
- AST::Boolean.new(true),
- AST::List.new(
- [
- AST::Identifier.new("+"),
- AST::Number.new(2.0),
- AST::Number.new(1.0),
- ]
- ),
- AST::Number.new(0.0)
- ).evaluate(Env.new)).to eq(
- 3.0
- )
- end
- end
- end
|