#!/usr/bin/perl # # $HeadURL: https://svn.oucs.ox.ac.uk/networks/src/debian/packages/libr/libmodule-multiconf-perl/trunk/t/60-mandatory.t $ # $LastChangedRevision: 1313 $ # $LastChangedDate: 2007-07-07 21:10:33 +0100 (Sat, 07 Jul 2007) $ # $LastChangedBy: oliver $ # use strict; use warnings FATAL => 'all'; use Test::More tests => 5; package ConfTest; use Module::MultiConf; ConfTest->Validate({ log_dispatch_syslog => { name => { type => SCALAR, default => 'rpc-serialized' }, min_level => { default => 'debug' }, facility => { default => 'local0' }, callbacks => { default => sub { return "$_[1]\n" } }, }, rpc_serialized => { debug => { default => 0 }, trace => { default => 0 }, }, }); ConfTest->Force({ data_serializer => { portable => 1, }, }); package main; my $c = ConfTest->new; ok( ! $@, "Tried to load itself: $@" ); isa_ok( $c, 'ConfTest' ); package ConfTest; ConfTest->Validate->{rpc_serialized}->{new_test} = {type => SCALAR}; package main; eval { $c = $c->parse($c) }; like( $@, qr/Mandatory parameter 'new_test' missing/, "Mandatory parameter" ); eval { $c = $c->parse({rpc_serialized => {new_test => [1,2,3]}}) }; like( $@, qr/The 'new_test' parameter.+was an 'arrayref', which is not one of the allowed types: scalar/, "Mandatory parameter wrong type" ); eval { $c = $c->parse({rpc_serialized => {new_test => 1}}) }; ok( ! $@, "Loaded with required param: $@" );