From 3d6a890c42add40d7644a6f6c0f1f4be64cdecb1 Mon Sep 17 00:00:00 2001
From: Mike Iovine <mike.iovine7@gmail.com>
Date: Tue, 7 Apr 2020 09:58:41 -0700
Subject: [PATCH] Add myunzip0 tests

---
 Makefile                                      |  12 +-
 myunzip0.c => src/myunzip0/myunzip0.c         |   2 -
 test_myunzip0                                 | Bin 0 -> 26056 bytes
 .../__pycache__/test_myunzip0.cpython-38.pyc  | Bin 0 -> 1164 bytes
 tests/resources/compressed.zip                | Bin 0 -> 14205 bytes
 tests/resources/compressed_expected.deflate   | Bin 0 -> 13995 bytes
 tests/resources/compressed_expected.txt       | 872 ++++++++++++++++++
 tests/resources/uncompressed.zip              | Bin 0 -> 256 bytes
 tests/resources/uncompressed_expected.txt     |   2 +
 tests/test_myunzip0.py                        |  38 +
 tests/unit_tests/README.md                    |   1 +
 tests/{ => unit_tests}/inflate_test.cpp       |   0
 12 files changed, 917 insertions(+), 10 deletions(-)
 rename myunzip0.c => src/myunzip0/myunzip0.c (94%)
 create mode 100755 test_myunzip0
 create mode 100644 tests/__pycache__/test_myunzip0.cpython-38.pyc
 create mode 100644 tests/resources/compressed.zip
 create mode 100644 tests/resources/compressed_expected.deflate
 create mode 100644 tests/resources/compressed_expected.txt
 create mode 100644 tests/resources/uncompressed.zip
 create mode 100644 tests/resources/uncompressed_expected.txt
 create mode 100644 tests/test_myunzip0.py
 create mode 100644 tests/unit_tests/README.md
 rename tests/{ => unit_tests}/inflate_test.cpp (100%)

diff --git a/Makefile b/Makefile
index 45f3aca..ccac190 100644
--- a/Makefile
+++ b/Makefile
@@ -1,10 +1,10 @@
-all : myzip0 myunzip0 huffman inflate test_inflate myunzip myzip lz77
+all : myzip0 myunzip0 huffman inflate myunzip myzip lz77
 
 myzip0 : myzip0.c
 	cc myzip0.c -o myzip0
 
-myunzip0 : myunzip0.c
-	cc myunzip0.c -o myunzip0
+myunzip0 : src/myunzip0/myunzip0.c
+	cc src/myunzip0/myunzip0.c -o myunzip0
 
 huffman : huffman.c
 	cc huffman.c -o huffman
@@ -15,10 +15,6 @@ inflate : include/inflate.h src/inflate/main.c src/inflate/inflate.c
 myunzip : include/inflate.h src/inflate/inflate.c src/myunzip/myunzip.c
 	gcc -I include src/inflate/inflate.c src/myunzip/myunzip.c -o myunzip 
 
-test_inflate : src/inflate/inflate.c tests/inflate_test.cpp
-	g++ -I include src/inflate/inflate.c tests/inflate_test.cpp -o test_inflate -l gtest
-	./test_inflate
-
 lz77 : include/bitwriter.h include/hashmap.h include/lz77.h src/lz77/bitwriter.c src/lz77/hashmap.c src/lz77/lz77.c src/lz77/main.c
 	cc -I include src/lz77/lz77.c src/lz77/hashmap.c src/lz77/bitwriter.c src/lz77/main.c -o lz77
 
@@ -26,4 +22,4 @@ myzip : include/bitwriter.h include/hashmap.h include/lz77.h src/lz77/bitwriter.
 	cc -I include src/lz77/lz77.c src/lz77/hashmap.c src/lz77/bitwriter.c src/myzip/myzip.c -o myzip
 
 clean :
-	rm -f myzip0 myunzip0 huffman inflate test_inflate myunzip myzip lz77
+	rm -f myzip0 myunzip0 huffman inflate myunzip myzip lz77 test_myunzip0
diff --git a/myunzip0.c b/src/myunzip0/myunzip0.c
similarity index 94%
rename from myunzip0.c
rename to src/myunzip0/myunzip0.c
index 0f158ea..aca88e7 100644
--- a/myunzip0.c
+++ b/src/myunzip0/myunzip0.c
@@ -57,8 +57,6 @@ void unzip(FILE *fp) {
     
     FILE *out = fopen(fname, "wb");
 
-    /* TODO is there a better way to do this? 
-     * worried about storing a huge buffer for large files... */
     char *buf = (char *) malloc(size * sizeof(char));
     fread(buf, 1, size, fp);
     fwrite(buf, 1, size, out); 
diff --git a/test_myunzip0 b/test_myunzip0
new file mode 100755
index 0000000000000000000000000000000000000000..6c1be68077365f2dc4381b19d4a631d16bf1199c
GIT binary patch
literal 26056
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

literal 0
HcmV?d00001

diff --git a/tests/__pycache__/test_myunzip0.cpython-38.pyc b/tests/__pycache__/test_myunzip0.cpython-38.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..fecba02928f82db37eaa8b7325d43518570350bf
GIT binary patch
literal 1164
zcmb_bF>ezw6t?f2%jHN~S{8<=VnT|La;;!QD5wM^q-G(N&<$AEvqRJ7a)<3hX~afH
zendKEU}EQocxB=*u)up4+61DO1)u!R@A<v&dw$P8Y%~G_<Ll>7Z@w@>zM--@z(zVS
z^-B<f2s$Fs;!h)5>Q3a8e>ZZ46R{UWxPqM%!6Z4Ud~_pERz>C1QO_lr`4@x&#w*hD
zz5^cVO@nrro)zQiFyBqkvN{}4Ixuw;ge1rZTvRyc1h`6;h=~fK*?M1Ub8vRJK%x+E
zIdJX4+=r<<APkvN12}J;3rficGII?(smwe9`jw?R^Mxbai_*uiSq*m~cLHpzH@#<o
zPKQeBtWb&6VKGj!GzVQv(T3Cf!^2F>v~?2(my=v32Ef2|9@sz^N4d&?N?TVIV_WOK
z?(Xy6(}S)JVqjIKuL^0MOk0-6=Gc02GK3s$bub*sB+Vlig!Pn6v-fgNEz@!|m=m=L
zCHe6%JkC-Xro&SiK2uqKlug1!@9pkA3iG{iktj-j*{pVcX17Yq>d9|mjq4x?-Eg<v
zfI2@tHr?s3^rpQQl>DD=!R@=QTRX_P+O5BOb^nHaD1TeX!6-Iz`rvxMWxswqD;KJu
z8Yr;B3vnA(cC)O&GKITfTrXO)zgDzmNUv3~KIh{&m7Lpv^E4C12-kJa-xcv_v7@$-
zdHag~&qNfyuNso$BljJ@QCbi<jfZ2-TeZk9#zTYoDj!j>zY4t-z9{Qsj{7lOK7>+t
g(8e%!<;W#xd2avlBFiV(Z@mG+r{(7|XS?asUz5u<#Q*>R

literal 0
HcmV?d00001

diff --git a/tests/resources/compressed.zip b/tests/resources/compressed.zip
new file mode 100644
index 0000000000000000000000000000000000000000..4087f2cf929cb5531af4994efcd0fa396e414c42
GIT binary patch
literal 14205
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

literal 0
HcmV?d00001

diff --git a/tests/resources/compressed_expected.deflate b/tests/resources/compressed_expected.deflate
new file mode 100644
index 0000000000000000000000000000000000000000..c72bc6c6305170a78502fd451c888aaabaafd0c0
GIT binary patch
literal 13995
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
Re(5N$5N_GP?Jpm?{|(}ihsgi{

literal 0
HcmV?d00001

diff --git a/tests/resources/compressed_expected.txt b/tests/resources/compressed_expected.txt
new file mode 100644
index 0000000..0892b33
--- /dev/null
+++ b/tests/resources/compressed_expected.txt
@@ -0,0 +1,872 @@
+Provided by USConstitution.net
+------------------------------
+
+[Note: Repealed text is not noted in this version.  Spelling errors have been
+corrected in this version.  For an uncorrected, annotated version of the
+Constitution, visit http://www.usconstitution.net/const.html ]
+
+We the People of the United States, in Order to form a more perfect Union,
+establish Justice, insure domestic Tranquility, provide for the common
+defence, promote the general Welfare, and secure the Blessings of Liberty to
+ourselves and our Posterity, do ordain and establish this Constitution for the
+United States of America.
+
+Article 1.
+
+Section 1
+All legislative Powers herein granted shall be vested in a Congress of the
+United States, which shall consist of a Senate and House of Representatives.
+
+Section 2
+The House of Representatives shall be composed of Members chosen every second
+Year by the People of the several States, and the Electors in each State shall
+have the Qualifications requisite for Electors of the most numerous Branch of
+the State Legislature.
+
+No Person shall be a Representative who shall not have attained to the Age of
+twenty five Years, and been seven Years a Citizen of the United States, and who
+shall not, when elected, be an Inhabitant of that State in which he shall be
+chosen.
+
+Representatives and direct Taxes shall be apportioned among the several States
+which may be included within this Union, according to their respective Numbers,
+which shall be determined by adding to the whole Number of free Persons,
+including those bound to Service for a Term of Years, and excluding Indians not
+taxed, three fifths of all other Persons.
+
+The actual Enumeration shall be made within three Years after the first Meeting
+of the Congress of the United States, and within every subsequent Term of ten
+Years, in such Manner as they shall by Law direct. The Number of
+Representatives shall not exceed one for every thirty Thousand, but each State
+shall have at Least one Representative; and until such enumeration shall be
+made, the State of New Hampshire shall be entitled to choose three,
+Massachusetts eight, Rhode Island and Providence Plantations one, Connecticut
+five, New York six, New Jersey four, Pennsylvania eight, Delaware one, Maryland
+six, Virginia ten, North Carolina five, South Carolina five and Georgia three.
+
+When vacancies happen in the Representation from any State, the Executive
+Authority thereof shall issue Writs of Election to fill such Vacancies.
+
+The House of Representatives shall choose their Speaker and other Officers; and
+shall have the sole Power of Impeachment.
+
+Section 3
+The Senate of the United States shall be composed of two Senators from each
+State, chosen by the Legislature thereof, for six Years; and each Senator shall
+have one Vote.
+
+Immediately after they shall be assembled in Consequence of the first Election,
+they shall be divided as equally as may be into three Classes. The Seats of the
+Senators of the first Class shall be vacated at the Expiration of the second
+Year, of the second Class at the Expiration of the fourth Year, and of the
+third Class at the Expiration of the sixth Year, so that one third may be
+chosen every second Year; and if Vacancies happen by Resignation, or otherwise,
+during the Recess of the Legislature of any State, the Executive thereof may
+make temporary Appointments until the next Meeting of the Legislature, which
+shall then fill such Vacancies.
+
+No person shall be a Senator who shall not have attained to the Age of thirty
+Years, and been nine Years a Citizen of the United States, and who shall not,
+when elected, be an Inhabitant of that State for which he shall be chosen.
+
+The Vice President of the United States shall be President of the Senate, but
+shall have no Vote, unless they be equally divided.
+
+The Senate shall choose their other Officers, and also a President pro tempore,
+in the absence of the Vice President, or when he shall exercise the Office of
+President of the United States.
+
+The Senate shall have the sole Power to try all Impeachments. When sitting for
+that Purpose, they shall be on Oath or Affirmation. When the President of the
+United States is tried, the Chief Justice shall preside: And no Person shall be
+convicted without the Concurrence of two thirds of the Members present.
+
+Judgment in Cases of Impeachment shall not extend further than to removal from
+Office, and disqualification to hold and enjoy any Office of honor, Trust or
+Profit under the United States: but the Party convicted shall nevertheless be
+liable and subject to Indictment, Trial, Judgment and Punishment, according to
+Law.
+
+Section 4
+The Times, Places and Manner of holding Elections for Senators and
+Representatives, shall be prescribed in each State by the Legislature thereof;
+but the Congress may at any time by Law make or alter such Regulations, except
+as to the Place of Choosing Senators.
+
+The Congress shall assemble at least once in every Year, and such Meeting shall
+be on the first Monday in December, unless they shall by Law appoint a
+different Day.
+
+Section 5
+Each House shall be the Judge of the Elections, Returns and Qualifications of
+its own Members, and a Majority of each shall constitute a Quorum to do
+Business; but a smaller number may adjourn from day to day, and may be
+authorized to compel the Attendance of absent Members, in such Manner, and
+under such Penalties as each House may provide.
+
+Each House may determine the Rules of its Proceedings, punish its Members for
+disorderly Behavior, and, with the Concurrence of two-thirds, expel a Member.
+
+Each House shall keep a Journal of its Proceedings, and from time to time
+publish the same, excepting such Parts as may in their Judgment require
+Secrecy; and the Yeas and Nays of the Members of either House on any question
+shall, at the Desire of one fifth of those Present, be entered on the Journal.
+
+Neither House, during the Session of Congress, shall, without the Consent of
+the other, adjourn for more than three days, nor to any other Place than that
+in which the two Houses shall be sitting.
+
+Section 6
+The Senators and Representatives shall receive a Compensation for their
+Services, to be ascertained by Law, and paid out of the Treasury of the United
+States. They shall in all Cases, except Treason, Felony and Breach of the
+Peace, be privileged from Arrest during their Attendance at the Session of
+their respective Houses, and in going to and returning from the same; and for
+any Speech or Debate in either House, they shall not be questioned in any other
+Place.
+
+No Senator or Representative shall, during the Time for which he was elected,
+be appointed to any civil Office under the Authority of the United States which
+shall have been created, or the Emoluments whereof shall have been increased
+during such time; and no Person holding any Office under the United States,
+shall be a Member of either House during his Continuance in Office.
+
+
+Section 7
+All bills for raising Revenue shall originate in the House of Representatives;
+but the Senate may propose or concur with Amendments as on other Bills.
+
+Every Bill which shall have passed the House of Representatives and the Senate,
+shall, before it become a Law, be presented to the President of the United
+States; If he approve he shall sign it, but if not he shall return it, with his
+Objections to that House in which it shall have originated, who shall enter the
+Objections at large on their Journal, and proceed to reconsider it. If after
+such Reconsideration two thirds of that House shall agree to pass the Bill, it
+shall be sent, together with the Objections, to the other House, by which it
+shall likewise be reconsidered, and if approved by two thirds of that House, it
+shall become a Law. But in all such Cases the Votes of both Houses shall be
+determined by Yeas and Nays, and the Names of the Persons voting for and
+against the Bill shall be entered on the Journal of each House respectively. If
+any Bill shall not be returned by the President within ten Days (Sundays
+excepted) after it shall have been presented to him, the Same shall be a Law,
+in like Manner as if he had signed it, unless the Congress by their Adjournment
+prevent its Return, in which Case it shall not be a Law.
+
+Every Order, Resolution, or Vote to which the Concurrence of the Senate and
+House of Representatives may be necessary (except on a question of Adjournment)
+shall be presented to the President of the United States; and before the Same
+shall take Effect, shall be approved by him, or being disapproved by him, shall
+be repassed by two thirds of the Senate and House of Representatives, according
+to the Rules and Limitations prescribed in the Case of a Bill.
+
+
+Section 8
+The Congress shall have Power To lay and collect Taxes, Duties, Imposts and
+Excises, to pay the Debts and provide for the common Defence and general
+Welfare of the United States; but all Duties, Imposts and Excises shall be
+uniform throughout the United States;
+
+To borrow money on the credit of the United States;
+
+To regulate Commerce with foreign Nations, and among the several States, and
+with the Indian Tribes;
+
+To establish an uniform Rule of Naturalization, and uniform Laws on the subject
+of Bankruptcies throughout the United States;
+
+To coin Money, regulate the Value thereof, and of foreign Coin, and fix the
+Standard of Weights and Measures;
+
+To provide for the Punishment of counterfeiting the Securities and current Coin
+of the United States;
+
+To establish Post Offices and Post Roads;
+
+To promote the Progress of Science and useful Arts, by securing for limited
+Times to Authors and Inventors the exclusive Right to their respective Writings
+and Discoveries;
+
+To constitute Tribunals inferior to the supreme Court;
+
+To define and punish Piracies and Felonies committed on the high Seas, and
+Offenses against the Law of Nations;
+
+To declare War, grant Letters of Marque and Reprisal, and make Rules concerning
+Captures on Land and Water;
+
+To raise and support Armies, but no Appropriation of Money to that Use shall be
+for a longer Term than two Years;
+
+To provide and maintain a Navy;
+
+To make Rules for the Government and Regulation of the land and naval Forces;
+
+To provide for calling forth the Militia to execute the Laws of the Union,
+suppress Insurrections and repel Invasions;
+
+To provide for organizing, arming, and disciplining, the Militia, and for
+governing such Part of them as may be employed in the Service of the United
+States, reserving to the States respectively, the Appointment of the Officers,
+and the Authority of training the Militia according to the discipline
+prescribed by Congress;
+
+To exercise exclusive Legislation in all Cases whatsoever, over such District
+(not exceeding ten Miles square) as may, by Cession of particular States, and
+the acceptance of Congress, become the Seat of the Government of the United
+States, and to exercise like Authority over all Places purchased by the Consent
+of the Legislature of the State in which the Same shall be, for the Erection of
+Forts, Magazines, Arsenals, dock-Yards, and other needful Buildings; And
+
+To make all Laws which shall be necessary and proper for carrying into
+Execution the foregoing Powers, and all other Powers vested by this
+Constitution in the Government of the United States, or in any Department or
+Officer thereof.
+
+Section 9
+The Migration or Importation of such Persons as any of the States now existing
+shall think proper to admit, shall not be prohibited by the Congress prior to
+the Year one thousand eight hundred and eight, but a tax or duty may be imposed
+on such Importation, not exceeding ten dollars for each Person.
+
+The privilege of the Writ of Habeas Corpus shall not be suspended, unless when
+in Cases of Rebellion or Invasion the public Safety may require it.
+
+No Bill of Attainder or ex post facto Law shall be passed.
+
+No capitation, or other direct, Tax shall be laid, unless in Proportion to the
+Census or Enumeration herein before directed to be taken.
+
+No Tax or Duty shall be laid on Articles exported from any State.
+
+No Preference shall be given by any Regulation of Commerce or Revenue to the
+Ports of one State over those of another: nor shall Vessels bound to, or from,
+one State, be obliged to enter, clear, or pay Duties in another.
+
+No Money shall be drawn from the Treasury, but in Consequence of Appropriations
+made by Law; and a regular Statement and Account of the Receipts and
+Expenditures of all public Money shall be published from time to time.
+
+No Title of Nobility shall be granted by the United States: And no Person
+holding any Office of Profit or Trust under them, shall, without the Consent of
+the Congress, accept of any present, Emolument, Office, or Title, of any kind
+whatever, from any King, Prince or foreign State.
+
+Section 10
+No State shall enter into any Treaty, Alliance, or Confederation; grant Letters
+of Marque and Reprisal; coin Money; emit Bills of Credit; make any Thing but
+gold and silver Coin a Tender in Payment of Debts; pass any Bill of Attainder,
+ex post facto Law, or Law impairing the Obligation of Contracts, or grant any
+Title of Nobility.
+
+No State shall, without the Consent of the Congress, lay any Imposts or Duties
+on Imports or Exports, except what may be absolutely necessary for executing
+its inspection Laws: and the net Produce of all Duties and Imposts, laid by
+any State on Imports or Exports, shall be for the Use of the Treasury of the
+United States; and all such Laws shall be subject to the Revision and Control
+of the Congress.
+
+No State shall, without the Consent of Congress, lay any duty of Tonnage, keep
+Troops, or Ships of War in time of Peace, enter into any Agreement or Compact
+with another State, or with a foreign Power, or engage in War, unless actually
+invaded, or in such imminent Danger as will not admit of delay.
+
+Article 2.
+
+Section 1
+The executive Power shall be vested in a President of the United States of
+America. He shall hold his Office during the Term of four Years, and, together
+with the Vice-President chosen for the same Term, be elected, as follows:
+
+Each State shall appoint, in such Manner as the Legislature thereof may direct,
+a Number of Electors, equal to the whole Number of Senators and Representatives
+to which the State may be entitled in the Congress: but no Senator or
+Representative, or Person holding an Office of Trust or Profit under the United
+States, shall be appointed an Elector.
+
+The Electors shall meet in their respective States, and vote by Ballot for two
+persons, of whom one at least shall not lie an Inhabitant of the same State
+with themselves. And they shall make a List of all the Persons voted for, and
+of the Number of Votes for each; which List they shall sign and certify, and
+transmit sealed to the Seat of the Government of the United States, directed to
+the President of the Senate. The President of the Senate shall, in the Presence
+of the Senate and House of Representatives, open all the Certificates, and the
+Votes shall then be counted. The Person having the greatest Number of Votes
+shall be the President, if such Number be a Majority of the whole Number of
+Electors appointed; and if there be more than one who have such Majority, and
+have an equal Number of Votes, then the House of Representatives shall
+immediately choose by Ballot one of them for President; and if no Person have a
+Majority, then from the five highest on the List the said House shall in like
+Manner choose the President. But in choosing the President, the Votes shall be
+taken by States, the Representation from each State having one Vote; a quorum
+for this Purpose shall consist of a Member or Members from two-thirds of the
+States, and a Majority of all the States shall be necessary to a Choice. In
+every Case, after the Choice of the President, the Person having the greatest
+Number of Votes of the Electors shall be the Vice President. But if there
+should remain two or more who have equal Votes, the Senate shall choose from
+them by Ballot the Vice-President.
+
+The Congress may determine the Time of choosing the Electors, and the Day on
+which they shall give their Votes; which Day shall be the same throughout the
+United States.
+
+No person except a natural born Citizen, or a Citizen of the United States, at
+the time of the Adoption of this Constitution, shall be eligible to the Office
+of President; neither shall any Person be eligible to that Office who shall not
+have attained to the Age of thirty-five Years, and been fourteen Years a
+Resident within the United States.
+
+In Case of the Removal of the President from Office, or of his Death,
+Resignation, or Inability to discharge the Powers and Duties of the said
+Office, the same shall devolve on the Vice President, and the Congress may by
+Law provide for the Case of Removal, Death, Resignation or Inability, both of
+the President and Vice President, declaring what Officer shall then act as
+President, and such Officer shall act accordingly, until the Disability be
+removed, or a President shall be elected.
+
+The President shall, at stated Times, receive for his Services, a Compensation,
+which shall neither be increased nor diminished during the Period for which he
+shall have been elected, and he shall not receive within that Period any other
+Emolument from the United States, or any of them.
+
+Before he enter on the Execution of his Office, he shall take the following
+Oath or Affirmation:
+
+"I do solemnly swear (or affirm) that I will faithfully execute the Office of
+President of the United States, and will to the best of my Ability, preserve,
+protect and defend the Constitution of the United States."
+
+Section 2
+The President shall be Commander in Chief of the Army and Navy of the United
+States, and of the Militia of the several States, when called into the actual
+Service of the United States; he may require the Opinion, in writing, of the
+principal Officer in each of the executive Departments, upon any subject
+relating to the Duties of their respective Offices, and he shall have Power to
+Grant Reprieves and Pardons for Offenses against the United States, except in
+Cases of Impeachment.
+
+He shall have Power, by and with the Advice and Consent of the Senate, to make
+Treaties, provided two thirds of the Senators present concur; and he shall
+nominate, and by and with the Advice and Consent of the Senate, shall appoint
+Ambassadors, other public Ministers and Consuls, Judges of the supreme Court,
+and all other Officers of the United States, whose Appointments are not herein
+otherwise provided for, and which shall be established by Law: but the Congress
+may by Law vest the Appointment of such inferior Officers, as they think
+proper, in the President alone, in the Courts of Law, or in the Heads of
+Departments.
+
+The President shall have Power to fill up all Vacancies that may happen during
+the Recess of the Senate, by granting Commissions which shall expire at the End
+of their next Session.
+
+Section 3
+He shall from time to time give to the Congress Information of the State of the
+Union, and recommend to their Consideration such Measures as he shall judge
+necessary and expedient; he may, on extraordinary Occasions, convene both
+Houses, or either of them, and in Case of Disagreement between them, with
+Respect to the Time of Adjournment, he may adjourn them to such Time as he
+shall think proper; he shall receive Ambassadors and other public Ministers; he
+shall take Care that the Laws be faithfully executed, and shall Commission all
+the Officers of the United States.
+
+Section 4
+The President, Vice President and all civil Officers of the United States,
+shall be removed from Office on Impeachment for, and Conviction of, Treason,
+Bribery, or other high Crimes and Misdemeanors.
+
+Article 3.
+
+Section 1
+The judicial Power of the United States, shall be vested in one supreme Court,
+and in such inferior Courts as the Congress may from time to time ordain and
+establish. The Judges, both of the supreme and inferior Courts, shall hold
+their Offices during good Behavior, and shall, at stated Times, receive for
+their Services a Compensation which shall not be diminished during their
+Continuance in Office.
+
+Section 2
+The judicial Power shall extend to all Cases, in Law and Equity, arising under
+this Constitution, the Laws of the United States, and Treaties made, or which
+shall be made, under their Authority; to all Cases affecting Ambassadors, other
+public Ministers and Consuls; to all Cases of admiralty and maritime
+Jurisdiction; to Controversies to which the United States shall be a Party; to
+Controversies between two or more States; between a State and Citizens of
+another State; between Citizens of different States; between Citizens of the
+same State claiming Lands under Grants of different States, and between a
+State, or the Citizens thereof, and foreign States, Citizens or Subjects.
+
+In all Cases affecting Ambassadors, other public Ministers and Consuls, and
+those in which a State shall be Party, the supreme Court shall have original
+Jurisdiction. In all the other Cases before mentioned, the supreme Court shall
+have appellate Jurisdiction, both as to Law and Fact, with such Exceptions, and
+under such Regulations as the Congress shall make.
+
+The Trial of all Crimes, except in Cases of Impeachment, shall be by Jury; and
+such Trial shall be held in the State where the said Crimes shall have been
+committed; but when not committed within any State, the Trial shall be at such
+Place or Places as the Congress may by Law have directed.
+
+Section 3
+Treason against the United States, shall consist only in levying War against
+them, or in adhering to their Enemies, giving them Aid and Comfort. No Person
+shall be convicted of Treason unless on the Testimony of two Witnesses to the
+same overt Act, or on Confession in open Court.
+
+The Congress shall have power to declare the Punishment of Treason, but no
+Attainder of Treason shall work Corruption of Blood, or Forfeiture except
+during the Life of the Person attainted.
+
+Article 4.
+
+Section 1
+Full Faith and Credit shall be given in each State to the public Acts, Records,
+and judicial Proceedings of every other State. And the Congress may by general
+Laws prescribe the Manner in which such Acts, Records and Proceedings shall be
+proved, and the Effect thereof.
+
+Section 2
+The Citizens of each State shall be entitled to all Privileges and Immunities
+of Citizens in the several States.
+
+A Person charged in any State with Treason, Felony, or other Crime, who shall
+flee from Justice, and be found in another State, shall on demand of the
+executive Authority of the State from which he fled, be delivered up, to be
+removed to the State having Jurisdiction of the Crime.
+
+No Person held to Service or Labour in one State, under the Laws thereof,
+escaping into another, shall, in Consequence of any Law or Regulation therein,
+be discharged from such Service or Labour, But shall be delivered up on Claim
+of the Party to whom such Service or Labour may be due.
+
+Section 3
+New States may be admitted by the Congress into this Union; but no new States
+shall be formed or erected within the Jurisdiction of any other State; nor any
+State be formed by the Junction of two or more States, or parts of States,
+without the Consent of the Legislatures of the States concerned as well as of
+the Congress.
+
+The Congress shall have Power to dispose of and make all needful Rules and
+Regulations respecting the Territory or other Property belonging to the United
+States; and nothing in this Constitution shall be so construed as to Prejudice
+any Claims of the United States, or of any particular State.
+
+Section 4
+The United States shall guarantee to every State in this Union a Republican
+Form of Government, and shall protect each of them against Invasion; and on
+Application of the Legislature, or of the Executive (when the Legislature
+cannot be convened) against domestic Violence.
+
+Article 5.
+
+The Congress, whenever two thirds of both Houses shall deem it necessary, shall
+propose Amendments to this Constitution, or, on the Application of the
+Legislatures of two thirds of the several States, shall call a Convention for
+proposing Amendments, which, in either Case, shall be valid to all Intents and
+Purposes, as part of this Constitution, when ratified by the Legislatures of
+three fourths of the several States, or by Conventions in three fourths
+thereof, as the one or the other Mode of Ratification may be proposed by the
+Congress; Provided that no Amendment which may be made prior to the Year One
+thousand eight hundred and eight shall in any Manner affect the first and
+fourth Clauses in the Ninth Section of the first Article; and that no State,
+without its Consent, shall be deprived of its equal Suffrage in the Senate.
+
+Article 6.
+
+All Debts contracted and Engagements entered into, before the Adoption of this
+Constitution, shall be as valid against the United States under this
+Constitution, as under the Confederation.
+
+This Constitution, and the Laws of the United States which shall be made in
+Pursuance thereof; and all Treaties made, or which shall be made, under the
+Authority of the United States, shall be the supreme Law of the Land; and the
+Judges in every State shall be bound thereby, any Thing in the Constitution or
+Laws of any State to the Contrary notwithstanding.
+
+The Senators and Representatives before mentioned, and the Members of the
+several State Legislatures, and all executive and judicial Officers, both of
+the United States and of the several States, shall be bound by Oath or
+Affirmation, to support this Constitution; but no religious Test shall ever be
+required as a Qualification to any Office or public Trust under the United
+States.
+
+Article 7.
+
+The Ratification of the Conventions of nine States, shall be sufficient for the
+Establishment of this Constitution between the States so ratifying the Same.
+
+Done in Convention by the Unanimous Consent of the States present the
+Seventeenth Day of September in the Year of our Lord one thousand seven hundred
+and Eighty seven and of the Independence of the United States of America the
+Twelfth. In Witness whereof We have hereunto subscribed our Names.
+
+George Washington - President and deputy from Virginia
+
+New Hampshire - John Langdon, Nicholas Gilman
+
+Massachusetts - Nathaniel Gorham, Rufus King
+
+Connecticut - William Samuel Johnson, Roger Sherman
+
+New York - Alexander Hamilton
+
+New Jersey - William Livingston, David Brearley, William Paterson, Jonathan
+Dayton
+
+Pennsylvania - Benjamin Franklin, Thomas Mifflin, Robert Morris, George Clymer,
+Thomas Fitzsimons, Jared Ingersoll, James Wilson, Gouvernour Morris
+
+Delaware - George Read, Gunning Bedford Jr., John Dickinson, Richard Bassett,
+Jacob Broom
+
+Maryland - James McHenry, Daniel of St Thomas Jenifer, Daniel Carroll
+
+Virginia - John Blair, James Madison Jr.
+
+North Carolina - William Blount, Richard Dobbs Spaight, Hugh Williamson
+
+South Carolina - John Rutledge, Charles Cotesworth Pinckney, Charles Pinckney,
+Pierce Butler
+
+Georgia - William Few, Abraham Baldwin
+
+Attest: William Jackson, Secretary
+
+
+Amendment 1
+Congress shall make no law respecting an establishment of religion, or
+prohibiting the free exercise thereof; or abridging the freedom of speech, or
+of the press; or the right of the people peaceably to assemble, and to petition
+the Government for a redress of grievances.
+
+Amendment 2
+A well regulated Militia, being necessary to the security of a free State, the
+right of the people to keep and bear Arms, shall not be infringed.
+
+Amendment 3
+No Soldier shall, in time of peace be quartered in any house, without the
+consent of the Owner, nor in time of war, but in a manner to be prescribed by
+law.
+
+Amendment 4
+The right of the people to be secure in their persons, houses, papers, and
+effects, against unreasonable searches and seizures, shall not be violated, and
+no Warrants shall issue, but upon probable cause, supported by Oath or
+affirmation, and particularly describing the place to be searched, and the
+persons or things to be seized.
+
+Amendment 5
+No person shall be held to answer for a capital, or otherwise infamous crime,
+unless on a presentment or indictment of a Grand Jury, except in cases arising
+in the land or naval forces, or in the Militia, when in actual service in time
+of War or public danger; nor shall any person be subject for the same offense
+to be twice put in jeopardy of life or limb; nor shall be compelled in any
+criminal case to be a witness against himself, nor be deprived of life,
+liberty, or property, without due process of law; nor shall private property be
+taken for public use, without just compensation.
+
+Amendment 6
+In all criminal prosecutions, the accused shall enjoy the right to a speedy and
+public trial, by an impartial jury of the State and district wherein the crime
+shall have been committed, which district shall have been previously
+ascertained by law, and to be informed of the nature and cause of the
+accusation; to be confronted with the witnesses against him; to have compulsory
+process for obtaining witnesses in his favor, and to have the Assistance of
+Counsel for his defence.
+
+Amendment 7
+In Suits at common law, where the value in controversy shall exceed twenty
+dollars, the right of trial by jury shall be preserved, and no fact tried by a
+jury, shall be otherwise re-examined in any Court of the United States, than
+according to the rules of the common law.
+
+Amendment 8
+Excessive bail shall not be required, nor excessive fines imposed, nor cruel
+and unusual punishments inflicted.
+
+Amendment 9
+The enumeration in the Constitution, of certain rights, shall not be construed
+to deny or disparage others retained by the people.
+
+Amendment 10
+The powers not delegated to the United States by the Constitution, nor
+prohibited by it to the States, are reserved to the States respectively, or to
+the people.
+
+Amendment 11
+The Judicial power of the United States shall not be construed to extend to any
+suit in law or equity, commenced or prosecuted against one of the United States
+by Citizens of another State, or by Citizens or Subjects of any Foreign State.
+
+Amendment 12
+The Electors shall meet in their respective states, and vote by ballot for
+President and Vice-President, one of whom, at least, shall not be an inhabitant
+of the same state with themselves; they shall name in their ballots the person
+voted for as President, and in distinct ballots the person voted for as
+Vice-President, and they shall make distinct lists of all persons voted for as
+President, and of all persons voted for as Vice-President and of the number of
+votes for each, which lists they shall sign and certify, and transmit sealed to
+the seat of the government of the United States, directed to the President of
+the Senate;
+
+The President of the Senate shall, in the presence of the Senate and House of
+Representatives, open all the certificates and the votes shall then be counted;
+
+The person having the greatest Number of votes for President, shall be the
+President, if such number be a majority of the whole number of Electors
+appointed; and if no person have such majority, then from the persons having
+the highest numbers not exceeding three on the list of those voted for as
+President, the House of Representatives shall choose immediately, by ballot,
+the President. But in choosing the President, the votes shall be taken by
+states, the representation from each state having one vote; a quorum for this
+purpose shall consist of a member or members from two-thirds of the states, and
+a majority of all the states shall be necessary to a choice. And if the House
+of Representatives shall not choose a President whenever the right of choice
+shall devolve upon them, before the fourth day of March next following, then
+the Vice-President shall act as President, as in the case of the death or other
+constitutional disability of the President.
+
+The person having the greatest number of votes as Vice-President, shall be the
+Vice-President, if such number be a majority of the whole number of Electors
+appointed, and if no person have a majority, then from the two highest numbers
+on the list, the Senate shall choose the Vice-President; a quorum for the
+purpose shall consist of two-thirds of the whole number of Senators, and a
+majority of the whole number shall be necessary to a choice. But no person
+constitutionally ineligible to the office of President shall be eligible to
+that of Vice-President of the United States.
+
+Amendment 13
+1. Neither slavery nor involuntary servitude, except as a punishment for crime
+whereof the party shall have been duly convicted, shall exist within the United
+States, or any place subject to their jurisdiction.
+
+2. Congress shall have power to enforce this article by appropriate
+legislation.
+
+Amendment 14
+1. All persons born or naturalized in the United States, and subject to the
+jurisdiction thereof, are citizens of the United States and of the State
+wherein they reside. No State shall make or enforce any law which shall abridge
+the privileges or immunities of citizens of the United States; nor shall any
+State deprive any person of life, liberty, or property, without due process of
+law; nor deny to any person within its jurisdiction the equal protection of the
+laws.
+
+2. Representatives shall be apportioned among the several States according to
+their respective numbers, counting the whole number of persons in each State,
+excluding Indians not taxed. But when the right to vote at any election for the
+choice of electors for President and Vice-President of the United States,
+Representatives in Congress, the Executive and Judicial officers of a State, or
+the members of the Legislature thereof, is denied to any of the male
+inhabitants of such State, being twenty-one years of age, and citizens of the
+United States, or in any way abridged, except for participation in rebellion,
+or other crime, the basis of representation therein shall be reduced in the
+proportion which the number of such male citizens shall bear to the whole
+number of male citizens twenty-one years of age in such State.
+
+3. No person shall be a Senator or Representative in Congress, or elector of
+President and Vice-President, or hold any office, civil or military, under the
+United States, or under any State, who, having previously taken an oath, as a
+member of Congress, or as an officer of the United States, or as a member of
+any State legislature, or as an executive or judicial officer of any State, to
+support the Constitution of the United States, shall have engaged in
+insurrection or rebellion against the same, or given aid or comfort to the
+enemies thereof. But Congress may by a vote of two-thirds of each House, remove
+such disability.
+
+4. The validity of the public debt of the United States, authorized by law,
+including debts incurred for payment of pensions and bounties for services in
+suppressing insurrection or rebellion, shall not be questioned. But neither the
+United States nor any State shall assume or pay any debt or obligation incurred
+in aid of insurrection or rebellion against the United States, or any claim for
+the loss or emancipation of any slave; but all such debts, obligations and
+claims shall be held illegal and void.
+
+5. The Congress shall have power to enforce, by appropriate legislation, the
+provisions of this article.
+
+Amendment 15
+1. The right of citizens of the United States to vote shall not be denied or
+abridged by the United States or by any State on account of race, color, or
+previous condition of servitude.
+
+2. The Congress shall have power to enforce this article by appropriate
+legislation.
+
+Amendment 16
+The Congress shall have power to lay and collect taxes on incomes, from
+whatever source derived, without apportionment among the several States, and
+without regard to any census or enumeration.
+
+Amendment 17
+The Senate of the United States shall be composed of two Senators from each
+State, elected by the people thereof, for six years; and each Senator shall
+have one vote. The electors in each State shall have the qualifications
+requisite for electors of the most numerous branch of the State legislatures.
+
+When vacancies happen in the representation of any State in the Senate, the
+executive authority of such State shall issue writs of election to fill such
+vacancies: Provided, That the legislature of any State may empower the
+executive thereof to make temporary appointments until the people fill the
+vacancies by election as the legislature may direct.
+
+This amendment shall not be so construed as to affect the election or term of
+any Senator chosen before it becomes valid as part of the Constitution.
+
+Amendment 18
+1. After one year from the ratification of this article the manufacture, sale,
+or transportation of intoxicating liquors within, the importation thereof into,
+or the exportation thereof from the United States and all territory subject to
+the jurisdiction thereof for beverage purposes is hereby prohibited.
+
+2. The Congress and the several States shall have concurrent power to enforce
+this article by appropriate legislation.
+
+3. This article shall be inoperative unless it shall have been ratified as an
+amendment to the Constitution by the legislatures of the several States, as
+provided in the Constitution, within seven years from the date of the
+submission hereof to the States by the Congress.
+
+Amendment 19
+The right of citizens of the United States to vote shall not be denied or
+abridged by the United States or by any State on account of sex.
+
+Congress shall have power to enforce this article by appropriate legislation.
+
+Amendment 20
+1. The terms of the President and Vice President shall end at noon on the 20th
+day of January, and the terms of Senators and Representatives at noon on the 3d
+day of January, of the years in which such terms would have ended if this
+article had not been ratified; and the terms of their successors shall then
+begin.
+
+2. The Congress shall assemble at least once in every year, and such meeting
+shall begin at noon on the 3d day of January, unless they shall by law appoint
+a different day.
+
+3. If, at the time fixed for the beginning of the term of the President, the
+President elect shall have died, the Vice President elect shall become
+President. If a President shall not have been chosen before the time fixed for
+the beginning of his term, or if the President elect shall have failed to
+qualify, then the Vice President elect shall act as President until a President
+shall have qualified; and the Congress may by law provide for the case wherein
+neither a President elect nor a Vice President elect shall have qualified,
+declaring who shall then act as President, or the manner in which one who is to
+act shall be selected, and such person shall act accordingly until a President
+or Vice President shall have qualified.
+
+4. The Congress may by law provide for the case of the death of any of the
+persons from whom the House of Representatives may choose a President whenever
+the right of choice shall have devolved upon them, and for the case of the
+death of any of the persons from whom the Senate may choose a Vice President
+whenever the right of choice shall have devolved upon them.
+
+5. Sections 1 and 2 shall take effect on the 15th day of October following the
+ratification of this article.
+
+6. This article shall be inoperative unless it shall have been ratified as an
+amendment to the Constitution by the legislatures of three-fourths of the
+several States within seven years from the date of its submission.
+
+Amendment 21
+1. The eighteenth article of amendment to the Constitution of the United States
+is hereby repealed.
+
+2. The transportation or importation into any State, Territory, or possession
+of the United States for delivery or use therein of intoxicating liquors, in
+violation of the laws thereof, is hereby prohibited.
+
+3. The article shall be inoperative unless it shall have been ratified as an
+amendment to the Constitution by conventions in the several States, as provided
+in the Constitution, within seven years from the date of the submission hereof
+to the States by the Congress.
+
+Amendment 22
+1. No person shall be elected to the office of the President more than twice,
+and no person who has held the office of President, or acted as President, for
+more than two years of a term to which some other person was elected President
+shall be elected to the office of the President more than once. But this
+Article shall not apply to any person holding the office of President, when this
+Article was proposed by the Congress, and shall not prevent any person who may
+be holding the office of President, or acting as President, during the term
+within which this Article becomes operative from holding the office of
+President or acting as President during the remainder of such term.
+
+2. This article shall be inoperative unless it shall have been ratified as an
+amendment to the Constitution by the legislatures of three-fourths of the
+several States within seven years from the date of its submission to the States
+by the Congress.
+
+Amendment 23
+1. The District constituting the seat of Government of the United States shall
+appoint in such manner as the Congress may direct: A number of electors of
+President and Vice President equal to the whole number of Senators and
+Representatives in Congress to which the District would be entitled if it were
+a State, but in no event more than the least populous State; they shall be in
+addition to those appointed by the States, but they shall be considered, for
+the purposes of the election of President and Vice President, to be electors
+appointed by a State; and they shall meet in the District and perform such
+duties as provided by the twelfth article of amendment.
+
+2. The Congress shall have power to enforce this article by appropriate
+legislation.
+
+Amendment 24
+1. The right of citizens of the United States to vote in any primary or other
+election for President or Vice President, for electors for President or
+Vice President, or for Senator or Representative in Congress, shall not be
+denied or abridged by the United States or any State by reason of failure to
+pay any poll tax or other tax.
+
+2. The Congress shall have power to enforce this article by appropriate
+legislation.
+
+Amendment 25
+1. In case of the removal of the President from office or of his death or
+resignation, the Vice President shall become President.
+
+2. Whenever there is a vacancy in the office of the Vice President, the
+President shall nominate a Vice President who shall take office upon
+confirmation by a majority vote of both Houses of Congress.
+
+3. Whenever the President transmits to the President pro tempore of the Senate
+and the Speaker of the House of Representatives his written declaration that he
+is unable to discharge the powers and duties of his office, and until he
+transmits to them a written declaration to the contrary, such powers and duties
+shall be discharged by the Vice President as Acting President.
+
+4. Whenever the Vice President and a majority of either the principal officers
+of the executive departments or of such other body as Congress may by law
+provide, transmit to the President pro tempore of the Senate and the Speaker of
+the House of Representatives their written declaration that the President is
+unable to discharge the powers and duties of his office, the Vice President
+shall immediately assume the powers and duties of the office as Acting
+President.
+
+Thereafter, when the President transmits to the President pro tempore of the
+Senate and the Speaker of the House of Representatives his written declaration
+that no inability exists, he shall resume the powers and duties of his office
+unless the Vice President and a majority of either the principal officers of
+the executive department or of such other body as Congress may by law provide,
+transmit within four days to the President pro tempore of the Senate and the
+Speaker of the House of Representatives their written declaration that the
+President is unable to discharge the powers and duties of his office. Thereupon
+Congress shall decide the issue, assembling within forty eight hours for that
+purpose if not in session. If the Congress, within twenty one days after
+receipt of the latter written declaration, or, if Congress is not in session,
+within twenty one days after Congress is required to assemble, determines by
+two thirds vote of both Houses that the President is unable to discharge the
+powers and duties of his office, the Vice President shall continue to discharge
+the same as Acting President; otherwise, the President shall resume the powers
+and duties of his office.
+
+Amendment 26
+1. The right of citizens of the United States, who are eighteen years of age or
+older, to vote shall not be denied or abridged by the United States or by any
+State on account of age.
+
+2. The Congress shall have power to enforce this article by appropriate
+legislation.
+
+Amendment 27
+No law, varying the compensation for the services of the Senators and
+Representatives, shall take effect, until an election of Representatives shall
+have intervened.
diff --git a/tests/resources/uncompressed.zip b/tests/resources/uncompressed.zip
new file mode 100644
index 0000000000000000000000000000000000000000..9517592d266293a6c2f7e97cb3ffe8c6cd194c88
GIT binary patch
literal 256
zcmWIWW@Zs#fPwe>*4~Q)azI!Ch)Yt7ON#Z2Qj7CTi;`1|^-J@T^K%P;{NmIUy^@NO
zkc`Y?1t3aP0I5_+%gjmDQ}8SS3FYONC?FIoB<7_k6ldg@=A`H-lw_n9rKaT<rRpdo
zr7EOWloTZ<m!zg}r4{ApD&$s{=2c}D80aZ*1$Z+u$vNV79ngUcj6ethgxnh7&B_MT
L;Rj^Q0c!&Q7imVd

literal 0
HcmV?d00001

diff --git a/tests/resources/uncompressed_expected.txt b/tests/resources/uncompressed_expected.txt
new file mode 100644
index 0000000..35d9a85
--- /dev/null
+++ b/tests/resources/uncompressed_expected.txt
@@ -0,0 +1,2 @@
+This is a test file. It is not compressed and should, therefore, be extracted
+from myunzip0. 
diff --git a/tests/test_myunzip0.py b/tests/test_myunzip0.py
new file mode 100644
index 0000000..6b29fff
--- /dev/null
+++ b/tests/test_myunzip0.py
@@ -0,0 +1,38 @@
+import unittest
+import os
+import filecmp
+import subprocess
+
+
+EXEC_NAME = './myunzip0'
+
+class TestMyUnzip0(unittest.TestCase):
+
+    def test_uncompressed(self):
+        subprocess.run([EXEC_NAME, 'tests/resources/uncompressed.zip'])
+        
+        # Check that the correct file was extracted
+        self.assertTrue(os.path.exists('tests/resources/uncompressed.txt'))
+
+        # Check correct output 
+        self.assertTrue(filecmp.cmp('tests/resources/uncompressed.txt', 
+                                    'tests/resources/uncompressed_expected.txt'))
+
+        # Remove output 
+        os.remove('tests/resources/uncompressed.txt')
+
+    def test_compressed(self):
+        subprocess.run([EXEC_NAME, 'tests/resources/compressed.zip'])
+
+        # Check that we extracted a DEFLATE stream 
+        self.assertTrue(os.path.exists('tests/resources/compressed.txt.deflate'))
+
+        # Check correct output
+        self.assertTrue(filecmp.cmp('tests/resources/compressed_expected.deflate', 
+                                    'tests/resources/compressed.txt.deflate'))
+
+        # Remove output 
+        os.remove('tests/resources/compressed.txt.deflate')
+
+if __name__ == '__main__':
+    unittest.main()
diff --git a/tests/unit_tests/README.md b/tests/unit_tests/README.md
new file mode 100644
index 0000000..586e08f
--- /dev/null
+++ b/tests/unit_tests/README.md
@@ -0,0 +1 @@
+These tests are specific to our implementation and were used for debugging.
diff --git a/tests/inflate_test.cpp b/tests/unit_tests/inflate_test.cpp
similarity index 100%
rename from tests/inflate_test.cpp
rename to tests/unit_tests/inflate_test.cpp
-- 
GitLab