The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -w

# Copyright 2008, 2009, 2010, 2011 Kevin Ryde

# This file is part of Chart.
#
# Chart is free software; you can redistribute it and/or modify it under the
# terms of the GNU General Public License as published by the Free Software
# Foundation; either version 3, or (at your option) any later version.
#
# Chart is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along
# with Chart.  If not, see <http://www.gnu.org/licenses/>.

use 5.010;
use strict;
use warnings;
use Data::Dumper;
use List::Util qw(min max);
use App::Chart::Database;
use App::Chart::Download;
use App::Chart::Series::Database;

{
  require App::Chart::Gtk2::SeriesModel;
  my $series = App::Chart::Series::Database->new('000001.SS');
  my $model = App::Chart::Gtk2::SeriesModel->new (series => $series);
  my $iter = $model->get_iter_first;
  say $model->get($iter,$model->COL_DATE);
  say $model->get($iter,$model->COL_OPEN);
  say $model->get($iter,$model->COL_CLOSE);
  say $model->get($iter,$model->COL_VOLUME) // 'undef';

  $series->fill(0,0);
  my $volumes = $series->array('volumes');
  say $volumes->[0] // 'undef';
  exit 0;
}


{
  my $series = App::Chart::Series::Database->new('BHP.AX');
  my $adj = $series->Adjust(adjust_dividends=>1);
  print Dumper($adj);
  my $hi = $adj->hi;
  print "hi $hi\n";
  my $lo = $hi - 100;
  $adj->fill ($lo, $hi);

  my $closes = $adj->array('closes');
  print Dumper([ @{$closes}[$lo..$hi] ]);
  print Dumper([ @{$series->array('closes')}[$lo..$hi] ]);

  my ($p_lo, $p_hi) = $adj->range ($lo, $hi);
  print "range $p_lo, $p_hi\n";

   ($p_lo, $p_hi) = $adj->initial_range ($lo, $hi);
  print "initial range $p_lo, $p_hi\n";
  exit 0;
}

{
  my $series = App::Chart::Series::Database->new('BHP.AX');
  my $dividends = $series->dividends;
  print Dumper ($dividends);
  my $annotations = $series->annotations;
  print Dumper ($annotations);
  exit 0;
}

{
  my $series = App::Chart::Series::Database->new('BHP.AX');
  print Dumper (\$series);
  print "hi ", $series->hi, "\n";

  print "collapse\n";
  require App::Chart::Series::Collapse;
  my $collapse = App::Chart::Series::Collapse->derive($series, 'App::Chart::Timebase::Weeks');
  print "hi ", $collapse->hi, "\n";
  exit 0;
}

{
  my $series = App::Chart::Series::Database->new('BHP.AX');
  print Dumper (\$series);
  print "hi ", $series->hi, "\n";

  my $hi = $series->hi;
  my $closes = $series->array('closes')->(8000, 8100);
  print "len ", $#$closes, "\n";
  print Dumper (\$closes);


#   my @x = $series->fetch_values (6000, 6020);
#   print Dumper (\@x);

#   my $dates = $series->dates;
#   print Dumper (\$dates);
  exit 0;
}

{
  {
    my $s1 = App::Chart::Series::Database->new('BHP.AX');
    print "s1 $s1\n";
    my $s2 = App::Chart::Series::Database->new('BHP.AX');
    print "s2 $s2\n";
    print $s1 == $s2 ? "equal\n" : "different\n";
  }
  print Dumper (\%App::Chart::Series::Database::cache);
  my $series = App::Chart::Series::Database->new('TEL.NZ');
  print Dumper (\%App::Chart::Series::Database::cache);
  print "series $series\n";
  exit 0;
}