#
# Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
#
# Distributed under the Boost Software License, Version 1.0. (See accompanying
# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
#

subproject libs/asio/test ;

project boost : $(BOOST_ROOT) ;
project boost_system : $(BOOST_SYSTEM_ROOT) ;

# bring in the rules for testing
import testing ;

if $(UNIX)
{
  switch $(JAMUNAME)
  {
  case SunOS* :
    {
      SOCKET_LIBS = <find-library>socket <find-library>nsl ;
    }
  }
}

template asio_unit_test
  : <lib>@boost/libs/thread/build/boost_thread
    <lib>@boost/libs/regex/build/boost_regex
    <lib>@boost/libs/test/build/boost_test_exec_monitor
    <lib>@boost_system/libs/system/build/boost_system
  : <include>../../.. <include>@boost <include>@boost_system
    <define>BOOST_ALL_NO_LIB=1
    <threading>multi
    <mingw><*><find-library>ws2_32
    <mingw><*><find-library>mswsock
    $(SOCKET_LIBS)
  ;

test-suite "asio"
  :
  [ run basic_datagram_socket.cpp <template>asio_unit_test ]
  [ run basic_deadline_timer.cpp <template>asio_unit_test ]
  [ run basic_socket_acceptor.cpp <template>asio_unit_test ]
  [ run basic_stream_socket.cpp <template>asio_unit_test ]
  [ run buffer.cpp <template>asio_unit_test ]
  [ run buffered_read_stream.cpp <template>asio_unit_test ]
  [ run buffered_stream.cpp <template>asio_unit_test ]
  [ run buffered_write_stream.cpp <template>asio_unit_test ]
  [ run buffers_iterator.cpp <template>asio_unit_test ]
  [ run completion_condition.cpp <template>asio_unit_test ]
  [ run datagram_socket_service.cpp <template>asio_unit_test ]
  [ run deadline_timer_service.cpp <template>asio_unit_test ]
  [ run deadline_timer.cpp <template>asio_unit_test ]
  [ run error.cpp <template>asio_unit_test ]
  [ run io_service.cpp <template>asio_unit_test ]
  [ run ip/address.cpp <template>asio_unit_test ]
  [ run ip/address_v4.cpp <template>asio_unit_test ]
  [ run ip/address_v6.cpp <template>asio_unit_test ]
  [ run ip/basic_endpoint.cpp <template>asio_unit_test ]
  [ run ip/basic_resolver.cpp <template>asio_unit_test ]
  [ run ip/basic_resolver_entry.cpp <template>asio_unit_test ]
  [ run ip/basic_resolver_iterator.cpp <template>asio_unit_test ]
  [ run ip/basic_resolver_query.cpp <template>asio_unit_test ]
  [ run ip/host_name.cpp <template>asio_unit_test ]
  [ run ip/multicast.cpp <template>asio_unit_test ]
  [ run ip/resolver_query_base.cpp <template>asio_unit_test ]
  [ run ip/resolver_service.cpp <template>asio_unit_test ]
  [ run ip/tcp.cpp <template>asio_unit_test ]
  [ run ip/udp.cpp <template>asio_unit_test ]
  [ run ip/unicast.cpp <template>asio_unit_test ]
  [ run ip/v6_only.cpp <template>asio_unit_test ]
  [ run is_read_buffered.cpp <template>asio_unit_test ]
  [ run is_write_buffered.cpp <template>asio_unit_test ]
  [ run local/basic_endpoint.cpp <template>asio_unit_test ]
  [ run local/connect_pair.cpp <template>asio_unit_test ]
  [ run local/datagram_protocol.cpp <template>asio_unit_test ]
  [ run local/stream_protocol.cpp <template>asio_unit_test ]
  [ run placeholders.cpp <template>asio_unit_test ]
  [ run posix/basic_descriptor.cpp <template>asio_unit_test ]
  [ run posix/basic_stream_descriptor.cpp <template>asio_unit_test ]
  [ run posix/descriptor_base.cpp <template>asio_unit_test ]
  [ run posix/stream_descriptor.cpp <template>asio_unit_test ]
  [ run posix/stream_descriptor_service.cpp <template>asio_unit_test ]
  [ run read.cpp <template>asio_unit_test ]
  [ run read_at.cpp <template>asio_unit_test ]
  [ run read_until.cpp <template>asio_unit_test ]
  [ run socket_acceptor_service.cpp <template>asio_unit_test ]
  [ run socket_base.cpp <template>asio_unit_test ]
  [ run strand.cpp <template>asio_unit_test ]
  [ run stream_socket_service.cpp <template>asio_unit_test ]
  [ run time_traits.cpp <template>asio_unit_test ]
  [ run windows/basic_handle.cpp <template>asio_unit_test ]
  [ run windows/basic_random_access_handle.cpp <template>asio_unit_test ]
  [ run windows/basic_stream_handle.cpp <template>asio_unit_test ]
  [ run windows/overlapped_ptr.cpp <template>asio_unit_test ]
  [ run windows/random_access_handle.cpp <template>asio_unit_test ]
  [ run windows/random_access_handle_service.cpp <template>asio_unit_test ]
  [ run windows/stream_handle.cpp <template>asio_unit_test ]
  [ run windows/stream_handle_service.cpp <template>asio_unit_test ]
  [ run write.cpp <template>asio_unit_test ]
  [ run write_at.cpp <template>asio_unit_test ]
  ;
