Link zlib statically for windows (#35)
* Add zlib 1.2.11 sources * link zlib statically for windows
This commit is contained in:
		
				
					committed by
					
						 Benjamin Sergeant
						Benjamin Sergeant
					
				
			
			
				
	
			
			
			
						parent
						
							5682129b1d
						
					
				
				
					commit
					f61fd7b7f1
				
			
							
								
								
									
										156
									
								
								third_party/zlib/contrib/ada/mtest.adb
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										156
									
								
								third_party/zlib/contrib/ada/mtest.adb
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,156 @@ | ||||
| ---------------------------------------------------------------- | ||||
| --  ZLib for Ada thick binding.                               -- | ||||
| --                                                            -- | ||||
| --  Copyright (C) 2002-2003 Dmitriy Anisimkov                 -- | ||||
| --                                                            -- | ||||
| --  Open source license information is in the zlib.ads file.  -- | ||||
| ---------------------------------------------------------------- | ||||
| --  Continuous test for ZLib multithreading. If the test would fail | ||||
| --  we should provide thread safe allocation routines for the Z_Stream. | ||||
| -- | ||||
| --  $Id: mtest.adb,v 1.4 2004/07/23 07:49:54 vagul Exp $ | ||||
|  | ||||
| with ZLib; | ||||
| with Ada.Streams; | ||||
| with Ada.Numerics.Discrete_Random; | ||||
| with Ada.Text_IO; | ||||
| with Ada.Exceptions; | ||||
| with Ada.Task_Identification; | ||||
|  | ||||
| procedure MTest is | ||||
|    use Ada.Streams; | ||||
|    use ZLib; | ||||
|  | ||||
|    Stop : Boolean := False; | ||||
|  | ||||
|    pragma Atomic (Stop); | ||||
|  | ||||
|    subtype Visible_Symbols is Stream_Element range 16#20# .. 16#7E#; | ||||
|  | ||||
|    package Random_Elements is | ||||
|       new Ada.Numerics.Discrete_Random (Visible_Symbols); | ||||
|  | ||||
|    task type Test_Task; | ||||
|  | ||||
|    task body Test_Task is | ||||
|       Buffer : Stream_Element_Array (1 .. 100_000); | ||||
|       Gen : Random_Elements.Generator; | ||||
|  | ||||
|       Buffer_First  : Stream_Element_Offset; | ||||
|       Compare_First : Stream_Element_Offset; | ||||
|  | ||||
|       Deflate : Filter_Type; | ||||
|       Inflate : Filter_Type; | ||||
|  | ||||
|       procedure Further (Item : in Stream_Element_Array); | ||||
|  | ||||
|       procedure Read_Buffer | ||||
|         (Item : out Ada.Streams.Stream_Element_Array; | ||||
|          Last : out Ada.Streams.Stream_Element_Offset); | ||||
|  | ||||
|       ------------- | ||||
|       -- Further -- | ||||
|       ------------- | ||||
|  | ||||
|       procedure Further (Item : in Stream_Element_Array) is | ||||
|  | ||||
|          procedure Compare (Item : in Stream_Element_Array); | ||||
|  | ||||
|          ------------- | ||||
|          -- Compare -- | ||||
|          ------------- | ||||
|  | ||||
|          procedure Compare (Item : in Stream_Element_Array) is | ||||
|             Next_First : Stream_Element_Offset := Compare_First + Item'Length; | ||||
|          begin | ||||
|             if Buffer (Compare_First .. Next_First - 1) /= Item then | ||||
|                raise Program_Error; | ||||
|             end if; | ||||
|  | ||||
|             Compare_First := Next_First; | ||||
|          end Compare; | ||||
|  | ||||
|          procedure Compare_Write is new ZLib.Write (Write => Compare); | ||||
|       begin | ||||
|          Compare_Write (Inflate, Item, No_Flush); | ||||
|       end Further; | ||||
|  | ||||
|       ----------------- | ||||
|       -- Read_Buffer -- | ||||
|       ----------------- | ||||
|  | ||||
|       procedure Read_Buffer | ||||
|         (Item : out Ada.Streams.Stream_Element_Array; | ||||
|          Last : out Ada.Streams.Stream_Element_Offset) | ||||
|       is | ||||
|          Buff_Diff   : Stream_Element_Offset := Buffer'Last - Buffer_First; | ||||
|          Next_First : Stream_Element_Offset; | ||||
|       begin | ||||
|          if Item'Length <= Buff_Diff then | ||||
|             Last := Item'Last; | ||||
|  | ||||
|             Next_First := Buffer_First + Item'Length; | ||||
|  | ||||
|             Item := Buffer (Buffer_First .. Next_First - 1); | ||||
|  | ||||
|             Buffer_First := Next_First; | ||||
|          else | ||||
|             Last := Item'First + Buff_Diff; | ||||
|             Item (Item'First .. Last) := Buffer (Buffer_First .. Buffer'Last); | ||||
|             Buffer_First := Buffer'Last + 1; | ||||
|          end if; | ||||
|       end Read_Buffer; | ||||
|  | ||||
|       procedure Translate is new Generic_Translate | ||||
|                                    (Data_In  => Read_Buffer, | ||||
|                                     Data_Out => Further); | ||||
|  | ||||
|    begin | ||||
|       Random_Elements.Reset (Gen); | ||||
|  | ||||
|       Buffer := (others => 20); | ||||
|  | ||||
|       Main : loop | ||||
|          for J in Buffer'Range loop | ||||
|             Buffer (J) := Random_Elements.Random (Gen); | ||||
|  | ||||
|             Deflate_Init (Deflate); | ||||
|             Inflate_Init (Inflate); | ||||
|  | ||||
|             Buffer_First  := Buffer'First; | ||||
|             Compare_First := Buffer'First; | ||||
|  | ||||
|             Translate (Deflate); | ||||
|  | ||||
|             if Compare_First /= Buffer'Last + 1 then | ||||
|                raise Program_Error; | ||||
|             end if; | ||||
|  | ||||
|             Ada.Text_IO.Put_Line | ||||
|               (Ada.Task_Identification.Image | ||||
|                  (Ada.Task_Identification.Current_Task) | ||||
|                & Stream_Element_Offset'Image (J) | ||||
|                & ZLib.Count'Image (Total_Out (Deflate))); | ||||
|  | ||||
|             Close (Deflate); | ||||
|             Close (Inflate); | ||||
|  | ||||
|             exit Main when Stop; | ||||
|          end loop; | ||||
|       end loop Main; | ||||
|    exception | ||||
|       when E : others => | ||||
|          Ada.Text_IO.Put_Line (Ada.Exceptions.Exception_Information (E)); | ||||
|          Stop := True; | ||||
|    end Test_Task; | ||||
|  | ||||
|    Test : array (1 .. 4) of Test_Task; | ||||
|  | ||||
|    pragma Unreferenced (Test); | ||||
|  | ||||
|    Dummy : Character; | ||||
|  | ||||
| begin | ||||
|    Ada.Text_IO.Get_Immediate (Dummy); | ||||
|    Stop := True; | ||||
| end MTest; | ||||
		Reference in New Issue
	
	Block a user