code: def test_or(mock_order_class, mock_exchange_class):
      # Test Initialization
      criteria = Stop("down", 0.03) | Stop("up", 0.03)
      assert criteria
      assert isinstance(criteria, Criteria)
  
      order = mock_order_class.return_value
      order.pair = USD / BTC
      order.price = 7000.00
  
      exchange = mock_exchange_class.return_value
  
      # Test (stop=True, stop=False) ===> True
      # Greater than 3.00% below order price
      exchange.quote_price.return_value = 0.95 * order.price
      assert criteria(order, exchange)
  
      # Equal to 3.00% below order price
      exchange.quote_price.return_value = 0.969 * order.price
      assert criteria(order, exchange)
  
      # Test (stop=False, stop=False) ===> False
      # Less than 3.00% below order price
      exchange.quote_price.return_value = 0.98 * order.price
      assert not criteria(order, exchange)
  
      # Less than 3.00% above order price
      exchange.quote_price.return_value = 1.02 * order.price
      assert not criteria(order, exchange)
  
      # Test (stop=False, stop=True) ===> True
      # Equal to 3.00% above order price
      exchange.quote_price.return_value = 1.031 * order.price
      assert criteria(order, exchange)
  
      # Greater than 3.00% above order price
      exchange.quote_price.return_value = 1.05 * order.price
      assert criteria(order, exchange)
  
imports: import unittest.mock
  from tensortrade.oms.orders.criteria import Criteria, Limit, Stop, Timed
  from tensortrade.oms.instruments import USD, BTC
  from tensortrade.oms.orders import TradeSide
label_desc: Use image node_id 2 for calling a global function with example usage: test_or(mock_order_class, mock_exchange_class) without return types