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

use strict;
use warnings;

use Test::More tests => 7;
use blib;
use jsFind;
use Data::Dumper;

BEGIN { use_ok('jsFind'); }

my $t = new jsFind B => 200;

my $file = shift @ARGV || 't/homer.txt';

ok(-e $file, "reading input file $file");

my $line = 0;
my $text = '';
my %words_usage;
my $word_count = 0;
my $max_words;
#$max_words = 100;

my $res;

my $full_text;

ok(open(U, $file), "open $file");
while(<U>) {
	chomp;
	$line++;
	next if (/^\s*$/);

	$full_text = "$line: ";

	my %usage;

	my @words = split(/\s+/,lc($_));

	foreach (@words) {
		$usage{$_}++;
	}

	foreach my $word (@words) {

		next if ($word eq '');

		$words_usage{"$word $line"} = $usage{$word};

		$res->{$word}->{$line} = $usage{$word};

		$t->B_search(
			Key => $word,
			Data => { "$line" => {
				t => "Odyssey line $line",
				f => $usage{$word},
				},
			},
			Insert => 1,
			Append => 1,
		);

		$word_count++;

		$full_text .= "$word ";

	}

	$full_text = "\n";

	last if ($max_words && $word_count >= $max_words);
}

my $test_data = Dumper($res);
$test_data =~ s/=>/:/gs;
$test_data =~ s/\$VAR1/var test_data/;
ok(open(JS, "> html/test_data.js"), "test_data.js");
print JS $test_data;
close(JS);

ok($test_data, "test_data saved");

my $sum = 0;
ok(open(TD, "> homer_freq.txt"), "homer_freq.txt");
foreach my $w (keys %words_usage) {
	print TD "$w: $words_usage{$w}\n";
	$sum += $words_usage{$w};
}
close(TD);
diag "homer_freq.txt created";

if (open(T,"> homer_text.txt")) {
	print T $full_text;
	close(T);
}
diag "homer_text.txt created";

if (open(T,"> homer_words.txt")) {
	print T $t->to_string;
	close(T);
}
diag "homer_words.txt created";

my $total_words = scalar keys %words_usage;

cmp_ok($t->to_jsfind(dir=>"./html/homer"), '==', $total_words, " jsfind index with $total_words words");

#print Dumper($t);