Skip to content

Commit

Permalink
former : experimenting
Browse files Browse the repository at this point in the history
  • Loading branch information
Wandalen committed Mar 23, 2024
1 parent 559afd2 commit 70f6390
Show file tree
Hide file tree
Showing 7 changed files with 70 additions and 23 deletions.
8 changes: 4 additions & 4 deletions module/core/former/src/axiomatic3.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,15 @@
/// xxx
pub trait StoragePerform : ::core::default::Default
{
type Formed;
fn preform( self ) -> Self::Formed;
// type FormedResult;
type Descriptor : FormerDescriptor< Storage = Self >;
fn preform( self ) -> < < Self as StoragePerform >::Descriptor as FormerDescriptor >::Formed;
}

/// xxx
pub trait FormerDescriptor
{
type Storage : StoragePerform< Formed = Self::Formed >;
type Storage : StoragePerform< Descriptor = Self >;
type Formed;
// type Former;
}
Expand Down Expand Up @@ -176,7 +177,6 @@ for FormingEndWrapper< Former, Context >
/// sophisticated and flexible construction patterns conducive to complex data transformations or object creation
/// sequences within builder patterns.

// xxx : change sequence
pub trait FormerBegin< Former : FormerDescriptor, Context >
{

Expand Down
9 changes: 7 additions & 2 deletions module/core/former/src/hash_map.rs
Original file line number Diff line number Diff line change
Expand Up @@ -70,8 +70,13 @@ for HashMap< K, E >
where
K : ::core::cmp::Eq + ::core::hash::Hash,
{
type Formed = Self;
fn preform( self ) -> Self::Formed
// type Formed = Self;
// fn preform( self ) -> Self::Formed
// {
// self
// }
type Descriptor = HashMapDescriptor< K, E >;
fn preform( self ) -> < < Self as StoragePerform >::Descriptor as FormerDescriptor >::Formed
{
self
}
Expand Down
9 changes: 7 additions & 2 deletions module/core/former/src/hash_set.rs
Original file line number Diff line number Diff line change
Expand Up @@ -58,11 +58,16 @@ for HashSet< K >
where
K : ::core::cmp::Eq + ::core::hash::Hash,
{
type Formed = Self;
fn preform( self ) -> Self::Formed
type Descriptor = HashSetDescriptor< K >;
fn preform( self ) -> < < Self as StoragePerform >::Descriptor as FormerDescriptor >::Formed
{
self
}
// type Formed = Self;
// fn preform( self ) -> Self::Formed
// {
// self
// }
}

impl< K > FormerDescriptor
Expand Down
5 changes: 3 additions & 2 deletions module/core/former/src/vector3.rs
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,9 @@ for VectorDescriptor< E >
impl< E > StoragePerform
for Vec< E >
{
type Formed = Self;
fn preform( self ) -> Self::Formed
// type Formed = Self;
type Descriptor = VectorDescriptor< E >;
fn preform( self ) -> < < Self as StoragePerform >::Descriptor as FormerDescriptor >::Formed
{
self
}
Expand Down
13 changes: 8 additions & 5 deletions module/core/former/tests/inc/former_tests/a_primitives_manual.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ pub struct Struct1
// generated by former
impl Struct1
{
// xxx : make sure it's covered by tests
pub fn former() -> Struct1Former< (), the_module::ReturnStorage >
{
Struct1Former::new()
Expand Down Expand Up @@ -71,9 +70,10 @@ for Struct1FormerDescriptor
impl former::StoragePerform
for Struct1FormerStorage
{
type Formed = Struct1;
// type Formed = Struct1;
type Descriptor = Struct1FormerDescriptor;

fn preform( mut self ) -> Self::Formed
fn preform( mut self ) -> < < Self as former::StoragePerform >::Descriptor as former::FormerDescriptor >::Formed
{

let int_1 = if self.int_1.is_some()
Expand Down Expand Up @@ -114,7 +114,9 @@ for Struct1FormerStorage
None
};

Self::Formed
// < Self::Descriptor as former::FormerDescriptor >::Formed
// < < Self as former::StoragePerform >::Descriptor as former::FormerDescriptor >::Formed
Struct1
{
int_1,
string_1,
Expand Down Expand Up @@ -147,9 +149,10 @@ where
{

// xxx : test that method exists
fn preform( mut self ) -> < Struct1FormerDescriptor as former::FormerDescriptor >::Formed
fn preform( self ) -> < Struct1FormerDescriptor as former::FormerDescriptor >::Formed
{

// xxx : test that method exists
former::StoragePerform::preform( self.storage )

// let int_1 = if self.storage.int_1.is_some()
Expand Down
45 changes: 39 additions & 6 deletions module/core/former/tests/inc/former_tests/only_test/primitives.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,6 @@ tests_impls!
fn internals()
{

// // test.case( "vector : construction" );
// int_1,
// string_1,
// int_optional_1,
// string_optional_1,

let former = Struct1::former();
a_id!( former.storage.int_1, None );
a_id!( former.storage.string_1, None );
Expand Down Expand Up @@ -47,6 +41,43 @@ tests_impls!

}

//

fn preform()
{

// formation should have method preform
let got = Struct1::former().preform();
let exp = Struct1::former().form();
a_id!( got, exp );

// storage should have method preform
let got = the_module::StoragePerform::preform( Struct1::former().storage );
let exp = Struct1::former().form();
a_id!( got, exp );

// storage should have method preform
use the_module::StoragePerform;
let got = Struct1::former().storage.preform();
let exp = Struct1::former().form();
a_id!( got, exp );

}

//

fn descriptor()
{

// descriptor exists
let got = < Struct1FormerDescriptor as the_module::FormerDescriptor >::Formed::former().form();
let exp = Struct1::former().form();
a_id!( got, exp );

}

//

fn test_int()
{

Expand Down Expand Up @@ -229,6 +260,8 @@ tests_impls!
tests_index!
{
internals,
preform,
descriptor,
test_int,
test_string,
test_optional_string,
Expand Down
4 changes: 2 additions & 2 deletions module/core/former/tests/inc/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ only_for_terminal_module!
{

println!( "current_dir : {:?}", std::env::current_dir().unwrap() );
let t = test_tools::compiletime::TestCases::new();
// let t = test_tools::compiletime::TestCases::new();

// xxx
// t.compile_fail( "tests/inc/compiletime/former_bad_attr.rs" );
Expand All @@ -119,7 +119,7 @@ only_for_terminal_module!
{

println!( "current_dir : {:?}", std::env::current_dir().unwrap() );
let t = test_tools::compiletime::TestCases::new();
let _t = test_tools::compiletime::TestCases::new();

//t.compile_fail( "tests/inc/compiletime/components_component_from_debug.rs" );

Expand Down

0 comments on commit 70f6390

Please sign in to comment.